Re: [閒聊] 每日leetcode

看板Marginalman作者 (dont)時間1年前 (2024/09/21 12:20), 編輯推噓1(100)
留言1則, 1人參與, 1年前最新討論串888/1548 (看更多)
386. Lexicographical Numbers ## 思路 萬用recursion 一開始先1~9, 再對curr*10 + i做recursion iteration case1. 乘10: 1 -> 10 -> 100 case2. 末位數<9,直接加1: 1 -> 2 case3. 末位數=9,除10到末位數<9再加1: 199 -> 2 case4. curr >= n時,除10到末位數<9再加1: 13 -> 2, 193 -> 2 2~4合在一起處理 ## Code Recursion ```python class Solution: def lexicalOrder(self, n: int) -> List[int]: res = [] def recur(curr): if curr > n: return res.append(curr) for i in range(10): recur(curr*10+i) for i in range(1, 10): recur(i) return res ``` Iteration ```python class Solution: def lexicalOrder(self, n: int) -> List[int]: res = [] curr = 1 for _ in range(n): res.append(curr) if curr * 10 <= n: curr *= 10 else: while curr % 10 == 9 or curr >= n: curr //= 10 curr += 1 return res ``` -- https://i.imgur.com/kyBhy6o.jpeg
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 185.213.82.231 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1726892410.A.F0A.html

09/21 15:46, 1年前 , 1F
Recursion的複雜度怎麼算ㄚ
09/21 15:46, 1F
文章代碼(AID): #1cxabwyA (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1cxabwyA (Marginalman)