美文网首页
【剑指Offer刷题小记】把数组排成最小的数(JAVA版)

【剑指Offer刷题小记】把数组排成最小的数(JAVA版)

作者: park_one | 来源:发表于2020-03-27 15:08 被阅读0次

    题目描述:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323

    问题分析:题目要求所给数组排成的数最小,也就是一种特殊的排序问题。

    (1)一种思路是把n个数进行排列组合,然后合并成一个数,一共有n!个数,再从这些数中选出最小的。很明显当n足够大时,时间复杂度会很大。

    (2)另一种思路,对于数组中的每两个数,以不同的顺序进行合并,然后比较两种合并得到的数的大小,较小的数的排列就是我们所需要的排列顺序。比如数a和b,如果ab<ba,那么就把a排到b的前面。因此问题就变成了对数组从“小”到“大”进行排序,不过这里的大小是两数以不同先后顺序合并得到的数的大小。

    代码截图

    相关文章

      网友评论

          本文标题:【剑指Offer刷题小记】把数组排成最小的数(JAVA版)

          本文链接:https://www.haomeiwen.com/subject/mcshuhtx.html