「这是我参与11月更文挑战的第17天,活动详情查看:2021最后一次更文挑战」
描述
输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
- 示例 1:
1 | makefile复制代码输入: [10,2] |
- 示例 2:
1 | makefile复制代码输入: [3,30,34,5,9] |
- 提示
1 | matlab复制代码0 < nums.length <= 100 |
解析
根据题意,这一题最关键的部分就是自定义排序,一旦找到排序的奇点,就可以轻而易举解决这一题。 我们判断两个数字谁大谁小的依据是,str1+str2是否大于str2+str1,其实就是这么简单。
示例
1 | scss复制代码class Solution { |
运行结果:
执行结果:通过
执行用时:4 ms, 在所有 Java 提交中击败了97.52%的用户
内存消耗:38 MB, 在所有 Java 提交中击败了45.05%的用户
- 其他解法
下面这种方式是通过随机快排,切记排序不是简单对a,b排序,如排序12,543,那么应该比较的是12543 和 54312 这个直接找到每个数是多少位,然后相加即可 12000 + 54 与 54300 + 12 比较
1 | css复制代码class Solution { |
本文转载自: 掘金