Dorck's Blog
修技术之道,日三省吾身 | App Dev & Freelance Thinker & Hacker Growth | 这里是 @道轲(Dorck) 的个人博客,与你一起探寻世界。
马上订阅 Dorck's Blog RSS 更新: https://dorck.cn/feed.xml
把数组排成最小的数
本文是对于 常用排序算法合集 的扩展应用。
题目内容
把数组排成最小的数。要求如下:
输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
附加说明:
-
0 < nums.length <= 100 - 输出结果可能非常大,所以你需要返回一个字符串而不是整数
- 拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0
题意分析
首先写几条测试用例来带入实际场景看一下情况:
- 输入
[2, 10, 6],输出拼接后的最小值是:1026。 - 输入
[48, 3, 305, 16],输出拼接后的最小值:16305348。
由上可知,想要拼接得到最小值,只需要将数组中的元素按某种规律依次“从小到大”排列即可。值得注意的是,这里的“大小”并不是简单数值比较,而是与目标元素拼接后哪个较小。举个例子,数字 3 与数字 305 比较大小,正常来说 3 < 305 ,而在本题情境下,显然 305 应该排在 3 之前,因为 3305 > 3053。那么,我们不难得出以下结论:
- 若 x + y > y + x,则 x “大于” y,本题情境下,y 应该排在 x 之前;
- 若 x + y < y + x,则 x “小于” y,x 应排在 y 之前。
代码实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
class Solution {
public String minNumber(...剩余内容已隐藏
查看完整文章以阅读更多Dorck's Blog
修技术之道,日三省吾身 | App Dev & Freelance Thinker & Hacker Growth | 这里是 @道轲(Dorck) 的个人博客,与你一起探寻世界。
马上订阅 Dorck's Blog RSS 更新: https://dorck.cn/feed.xml
把数组排成最小的数
2023年3月19日 17:18数据结构排序算法本文是对于 常用排序算法合集 的扩展应用。
题目内容
把数组排成最小的数。要求如下:
输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
附加说明:
-
0 < nums.length <= 100
- 输出结果可能非常大,所以你需要返回一个字符串而不是整数
- 拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0
题意分析
首先写几条测试用例来带入实际场景看一下情况:
- 输入
[2, 10, 6],输出拼接后的最小值是:1026。
- 输入
[48, 3, 305, 16],输出拼接后的最小值:16305348。
由上可知,想要拼接得到最小值,只需要将数组中的元素按某种规律依次“从小到大”排列即可。值得注意的是,这里的“大小”并不是简单数值比较,而是与目标元素拼接后哪个较小。举个例子,数字 3 与数字 305 比较大小,正常来说 3 < 305 ,而在本题情境下,显然 305 应该排在 3 之前,因为 3305 > 3053。那么,我们不难得出以下结论:
- 若 x + y > y + x,则 x “大于” y,本题情境下,y 应该排在 x 之前;
- 若 x + y < y + x,则 x “小于” y,x 应排在 y 之前。
代码实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
class Solution {
public String minNumber(...剩余内容已隐藏
查看完整文章以阅读更多