Re: [閒聊] 每日leetcode

看板Marginalman作者 (JerryChung)時間1年前 (2024/10/17 12:33), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串997/1548 (看更多)
https://leetcode.com/problems/maximum-swap 670. Maximum Swap 給一個整數num 最多可以交換一次2位數字以獲得最大值 回傳可以獲得的最大值 Example 1: Input: num = 2736 Output: 7236 Explanation: 交換2跟7 Example 2: Input: num = 9973 Output: 9973 Explanation: 不用交換 Constraints: 0 <= num <= 10^8 思路: 原本很單純右起直接找最大值 再左起找能交換的 結果在測資 98368 就錯了 改為先排序 判斷從哪個位置開始不同 再找出原始位置並交換 因為 str 不能直接交換兩個位置 所以轉成 list 交換後再 join Python Code: class Solution: def maximumSwap(self, num: int) -> int: num_str = str(num) num_list = list(num_str) num_sorted = sorted(num_list, reverse=True) if num_list == num_sorted: return num for i, temp in enumerate(num_sorted): if temp != num_list[i]: idx = num_str.rindex(temp) num_list[i], num_list[idx] = num_list[idx], num_list[i] return int(''.join(num_list)) return num 怪怪的怪怪的 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.45.8.35 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1729139616.A.767.html
文章代碼(AID): #1d49EWTd (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1d49EWTd (Marginalman)