leetcode 179. 最大数

题解

自定义排序方式,比较 arr[i]+arr[j], arr[j]+arr[i] 两种相连方式,例如比较 “34” 和 “341” 时,可以转换为比较 “34341” 和 “34134”,可以看出 “34” 要排在 “341” 前面

示例代码(go)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
func largestNumber(nums []int) string {
arr := make([]string, 0)
for _, v := range nums {
arr = append(arr, strconv.Itoa(v))
}
sort.Slice(arr, func (i, j int) bool {
return arr[i]+arr[j] > arr[j]+arr[i]
})
res := strings.Join(arr, "")
if len(res) > 0 && res[0] == '0' {
return "0"
}
return res
}