题目解析
本题直接对数组进行字典序升序,拼接后得到的组合数,不一定是最小的,比如数组 [3, 32, 321],此时按照字典序升序后,还是 [3, 32, 321],拼接出来为332321,而这显然不是最小的组合数,最小的组合数应该是321323。
对于三个数及以上的数组,我们需要从中取出3个数,这3个数,首先需要保证总长度最短,即保证组合数的位数最少,其值才能最小,因此我们需要将数组(按数值大小)升序,这样小数在前,大数在后,在保证总长度最小的同时,也能保证局部元素最优。比如 [1,23,456,457,2111],取数值升序后的前三个数1,23,456,是最优的。
获得最优前三个元素后,按照如下规则排序:
尝试对要组合的两个数字串 a,b 进行组合,此时有两种组合方式:
- a + b
- b + a
然后,比较 (a + b) 和 (b+a)的数值谁小,如果 a+b 的数值更小,则保持当前 a,b 顺序不变,如果 b+a 的数值更小,则交换 a,b 位置。
比如 strs = [a, b], a = "4",b = "34"
- a + b = "434"
- b + a = "344"
可以发现 b+a 更小,因此交换 a,b 位置,strs变为[34, 3],然后进行元素拼接得到 343 最大组合数。

已下架不支持订阅
224

被折叠的 条评论
为什么被折叠?



