这是一个面试问题。我们有一个正整数数组,我们必须重新排列和加入数组元素,以便得到的数字是可以使用这个数组形成的最大数目。
例如。:

[884 88] -> 88884

[20 19 90] -> 902019

[909 90] -> 90990

我的解决方案:我认为应该先按最有效数字(msd)按降序对元素进行排序。
也就是说,对于909、12、88,我们将在排序后得到909、88、12,对于那些具有相同MSD排序的第二个MSD,并继续这样做。
所以对于数组909,99,我们将有99和909并将它们合并。
但是对于数组909,90我们将有90909,这里有一个捕获,因为我们在两个数字中都有90个公共值,所以
90个
909--->这里有两种可能的组合,因为90是常见的,所以9在从909中移除公共部分之后就剩下了,所以我将检查将这个9附加到90是否会使它变大。在这个例子中,在90前面加上9,我们有990,大于909,所以909后面会加上90。所以答案是90990。
但是当我试图编码它时,我发现代码太复杂,因为它太复杂了。有什么建议吗?

最佳答案

设宽度=一组数字中的最小值(位数)
只按数字的第一个宽度递减对数字进行排序-先按数字较少的数字排序以断开连接
拿第一个
重复

07-24 09:26