179. 最大数
给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。
示例 1:
输入: [10,2]
输出: 210
示例 2:
输入: [3,30,34,5,9]
输出: 9534330
说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。
Code
import (
"sort"
"strconv"
)
type ans []string
func (self ans) Len() int {
return len(self)
}
func (self ans) Swap(i, j int) {
self[i], self[j] = self[j], self[i]
}
func (self ans) Less(i, j int) bool {
a, _ := strconv.Atoi(self[i] + self[j])
b, _ := strconv.Atoi(self[j] + self[i])
return a > b
}
func largestNumber(nums []int) string {
var a ans
a = make([]string, len(nums))
for i, v := range nums {
a[i] = strconv.Itoa(v)
}
sort.Sort(a)
res := ""
if a[0] == "0" {
return "0"
}
for _, v := range a {
res += v
}
return res
}
本文介绍了一种算法,用于将一组非负整数重新排列,以形成可能的最大整数。通过自定义排序规则,该算法考虑了整数拼接后的整体大小,解决了传统排序无法解决的问题。示例代码使用Go语言实现,包括自定义排序、字符串转换和结果输出。
202

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



