Re: [閒聊] 每日leetcode

看板Marginalman作者 (神楽めあ的錢包)時間1年前 (2024/10/19 00:17), 編輯推噓1(100)
留言1則, 1人參與, 1年前最新討論串1005/1554 (看更多)
補一下之前的 670. Maximum Swap 給一個整數 可以將任一兩個位數交換 請回傳交換後最大的數字 思路: 開一個矩陣去紀錄0~9從後面數來第一次出現的index 接著從9開始從頭到9第一次出現的index 開始找有沒有比9還小的數字 有就交換沒有就去找後面的 就可以找到答案了 golang code : func maximumSwap(num int) int { s := []byte(strconv.Itoa(num)) rec, n := [10]int{}, len(s)-1 for i := n; i > -1; i-- { if rec[int(s[i]-'0')] == 0 { rec[int(s[i]-'0')] = i } } for i := 9; i > -1; i-- { if rec[i] != 0 { for j := 0; j < rec[i]; j++ { if int(s[j]-'0') < i { s[j], s[rec[i]] = s[rec[i]], s[j] rec[i] = -1 break } } if rec[i] == -1 { break } } } res, _ := strconv.Atoi(string(s)) return res } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.71.214.188 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1729268244.A.697.html

10/19 00:20, 1年前 , 1F
大師
10/19 00:20, 1F
文章代碼(AID): #1d4eeKQN (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1d4eeKQN (Marginalman)