Re: [閒聊] 每日leetcode

看板Marginalman作者 (神楽めあ的錢包)時間1年前 (2024/09/18 21:08), 編輯推噓1(102)
留言3則, 3人參與, 1年前最新討論串876/1548 (看更多)
勝我在寫白癡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() } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.73.246.98 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1726664914.A.23A.html

09/18 21:09, 1年前 , 1F
別卷了
09/18 21:09, 1F

09/18 21:09, 1年前 , 2F
這題真的好難 我早上還以為很簡單
09/18 21:09, 2F

09/18 21:12, 1年前 , 3F
"0" 突然覺得這個好色
09/18 21:12, 3F
文章代碼(AID): #1cwj3I8w (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1cwj3I8w (Marginalman)