不会飞的章鱼

熟能生巧,勤能补拙;念念不忘,必有回响。

剑指 Offer 45. 把数组排成最小的数

题目

剑指 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
//Go
func minNumber(nums []int) string {
// 直接将数组中的元素按照 从1到9进行排序
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. 把数组排成最小的数

------ 本文结束------
如果本篇文章对你有帮助,可以给作者加个鸡腿~(*^__^*),感谢鼓励与支持!