zoukankan      html  css  js  c++  java
  • 排序数组元素使获得最大数字

    问题描述:

    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,于是乎我们大功告成喽。

  • 相关阅读:
    进程与线程(二) java进程的内存模型
    进程学习(一) 进程的地址空间
    在一个数组中除两个数字只出现1次外,其它数字都出现了2次
    倒水问题
    leecode 树是否是平衡树 java
    Max Sum
    Encoding
    海阔天空-
    Binomial Showdown
    Square
  • 原文地址:https://www.cnblogs.com/xubenben/p/3385690.html
Copyright © 2011-2022 走看看