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

  • 相关阅读:
    【Linux高频命令专题(7)】rm
    【Linux高频命令专题(6)】mkdir
    【mongoDB运维篇①】用户管理
    【Linux高频命令专题(5)】rmdir
    【mongoDB中级篇②】索引与expain
    【mongoDB中级篇①】游标cursor
    Lua中的字符串函数库
    ngx_lua 随笔
    Nginx与Lua
    MAC 上搭建lua
  • 原文地址:https://www.cnblogs.com/xubenben/p/3385690.html
Copyright © 2011-2022 走看看