题目
剑指 Offer 45. 把数组排成最小的数
注意:
- 输出结果可能非常大,所以你需要返回一个字符串而不是整数
- 拼接起来的数字可能会有前导 0,最后结果不需要去掉前导0
描述
题目要求把数组中所有的数字一起拼凑出一个最小的数字,那么
题解
1~9排序再组合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| func minNumber(nums []int) string { sort.Slice(nums, func(i, j int) bool { return compareNumber(nums[i],nums[j]) }) var res strings.Builder for i:=0;i<len(nums);i++{ res.WriteString(fmt.Sprintf("%d",nums[i])) } return res.String() }
func compareNumber(a,b int)bool{ str1 := fmt.Sprintf("%d%d",a,b) str2 := fmt.Sprintf("%d%d",b,a) if str1<str2{ return true } return false }
|
参考
吴师兄学算法-剑指 Offer 45. 把数组排成最小的数