题目描述
输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
来源:力扣(LeetCode)
可以测试的 usecase
都是跑失败过的例子(解答错误),可供再次练习时的测试使用。
a = [10,2]
a = [3,30,34,5,9]
a = [0,9,8,7,6,5,4,3,2,1]
a = [128,12,320,32]
a = [5,54,52,67,68,5,52,17,93,53]
a = [52,5,51,50]
a = [824,938,1399,5607,6973,5703,9609,4398,8247]
解题思路
- 我们需要确定一个规则判断 m 与 n 哪个应该排在前面,而不是仅仅比较这两个数字的值哪个更大。
- 一个非常直观的解决大树问题的方法就是把数字转换成字符串。另外,由于把数字 m 和 n 拼接起来得到
mn
和nm
,它们的位数肯定是相同的,因此比较他们的大小只需要按照字符串大小的比较规则就可以了。
方法一
- python3 当中的自定义排序:使用 functools 模块当中的
cmp_to_key
。- 详细说明: