做法一:recursive - DFS
找出最小的可重複動作:merge 兩個 nodes
- 題目給的 method 就可以用來做遞迴
假設
mergeTrees已完成,實作此最小可重複動作1
2
3
4root1.val += root2.val
root1.left = self.mergeTrees(root1.left, root2.left)
root1.right = self.mergeTrees(root1.right, root2.right)
return root1
題目
思路:
因為要做一個 linked list,可以用 while 在每次迴圈都接一個 node 出來
先設 while True:,等寫迴圈內容時再來確定 while 可繼續執行的條件
寫第一 part (如下) 後發現,while 條件需要 l1 and l2
1 | if l1.val > l2.val: |
題目
思路:
既然是 Linked List,我們可以宣告一個指標 curr 指向第一個 node,用 while 迴圈一次檢查一個 node (檢查完將指標移到下一個 node)
head 來移動,因為到時候回傳答案的時候需要回傳這個 head設定 while 可以繼續檢查的條件:有時要先寫 while 的內容,才會比較確定 while 條件應該怎麼寫,這時可以先寫 while True:,等內容寫完再來改條件
題目
思路:
題目
思路:最直覺是直接 iterate nums,不過題目指定要 O(log n),所以用 binary search 才能達到
設定左右兩個指標作為可能答案範圍:[left, right],目標是移動這兩個指標,縮小答案範圍,直到我們找到答案或答案範圍縮到只剩 1 個為止
while left < right: binary search 什麼時候需要繼續下去?只要符合這個條件,就繼續 binary search
Update your browser to view this website correctly. Update my browser now