Re: [閒聊] 每日leetcode

作者: JIWP (JIWP)   2024-09-18 21:08:32
勝我在寫白癡LEETCODE了
這題好難
179. Largest Number
給一個整數矩陣nums
請回傳可以透過nums裡元素所組合出的最大數字
因為這個數字很大,請用字串回傳
思路:
如果兩個數字長度一樣,那就直接比大小就好
大的放前面
難的是兩個數字長度不一樣要怎麼排序
先把數字轉成字串
假設有a(4個字元)、b(2個字元)兩個數字
接著從第一個字元開始比較,同一個index誰大就誰放前面
因為兩個數字長度不一樣
所以可能會有一個數字先沒有字元比較,這邊是b
那就把b再去跟a的後面兩個字元比較
這樣就找到規則了
舉例:3534、35
前面數字一樣都是35,接著因為35>34
所以要按照35、3534這樣得順序才能得到比較大的數字
golang code :
func largestNumber(nums []int) string {
arr := make([]string, len(nums))
for key, val := range nums {
arr[key] = strconv.Itoa(val)
}
var cmp func(a, b string) int
cmp = func(a, b string) int {
if a == b {
return -1
}
length := len(a)
if length > len(b) {
length = len(b)
}
i := 0
for ; i < length; i++ {
if a[i] > b[i] {
return -1
} else if a[i] < b[i] {
return 1
}
}
if i == len(a) {
return cmp(a, b[i:])
}
return cmp(a[i:], b)
}
slices.SortFunc(arr, cmp)
var res strings.Builder
for _, val := range arr {
if val == "0" && res.String() == "0" {
break
}
res.WriteString(val)
}
return res.String()
}
作者: NoahKurumi (好諾寶)   2024-09-18 21:09:00
別卷了
作者: sustainer123 (caster)   2024-09-18 21:09:00
這題真的好難 我早上還以為很簡單
作者: JIWP (JIWP)   2024-09-18 21:12:00
"0" 突然覺得這個好色

Links booklink

Contact Us: admin [ a t ] ucptt.com