排序数组元素使获得最大数字

问题描述:

Given an integer array, sort the integer array such that the concatenated integer of the result array is max. e.g. [4, 94, 9, 14, 1] will be sorted to [9,94,4,14,1] where the result integer is 9944141

先说一个错误的思路吧:

将数组中的元素按照字典序排序,然后再依次结合生成最终的结果.

咋一看,没错啊,按照这个思路确实可以得到样例中的结果.但是为什么说错了呢?

大家可以看看这个例子,5,56,54.这个时候无论怎么排序,你的得到的结果是55456或者56545,然而正确的结果应该是56554。所以喽,上述算法是错误滴!

 

言归正传,给出正确的算法。

首先,我们重新定义元素间大小比较的操作。对于两个数字a,b。如果ab>ba,那么就认为a>b。如果ab<ba,那么a<b.否则a==b。

其次,我们按照新定义的这个顺序给数组中元素排序。排序后的结果就是我们需要的最大数啦!

 

还是用5,56,54这个例子吧。

556<565,故而5<56;

554>545,故而5>54;

结合来看也就是54<5<56,所以最终结果应该是56554,于是乎我们大功告成喽。

posted on 2013-10-24 11:28  苯苯吹雪  阅读(288)  评论(0编辑  收藏  举报

导航