这是一道面试题。我们有一个正整数数组,我们必须重新排列和连接数组元素,以使结果数是使用该数组可以形成的最大数。
例如:
[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,我们将有 90、909,这是一个问题,因为我们在两个数字中都有 90,所以
90
909 ---> 这里可能有两种组合,因为 90 是常见的,所以从 909 中删除公共部分后留下 9,所以我会检查将这个 9 附加到 90 是否使其变大。在这种情况下,在 90 前面加上 9,我们得到 990,它大于 909,所以 909 后面跟着 90。所以答案是 90990。
但是当我尝试对其进行编码时,我发现由于涉及太多复杂性而难以编码。有什么建议么?