題目
思路:
- 可以找到最小可重複動作嗎?
- 題目的 method 要傳入 first node, 回傳它的 clone
- 最小可重複動作可設定為:給定一個 node, 回傳 its clone
- DFS: 先寫 recursive case
- Base case: method 收到已 clone 過的 node
- Use a dict to record nodes been cloned.
- 須注意傳入 cloneGraph 的 node 有可能是 None
題目
思路:
題目
思路:
k 是 i 到 j 之間的任意點。比較 i -> j 經過所有 k 的距離,最小的即為 i -> j 的最短距離。i -> 2 -> 1 -> j and the iteration consider k == 1 first. But the dist[i][1] not yet populated and still have value of float('inf'). It will have the actual value until k == 2.
題目
最直覺的作法就是先排序,取出最重的兩個撞擊後,把剩下的放回去,然後重複以上步驟:
1 | def lastStoneWeight(self, stones: List[int]) -> int: |
但這樣的時間複雜度為 O(n^2 * log n),太大了,有沒有其他方法?
題目
這邊記錄自己答案的演變和檢討,有需要的也可以直接跳到最後的 O(1) space complexity 解答
一開始的思路:用遞增的 index 同時 go through 這兩個字串,按照裡面的 backspace hint build 出兩個新的字串再來看看是否相等
題目
思路:怎麼判斷兩個字串是不是 anagram?
題目
思路
1 | def preorder(self, root: 'Node') -> List[int]: |
題目
思路
題目
思路
題目
思路:最直覺的作法就是從頭開始沿著 next 一直走,然後用一個 set 來存放走過的 node,如果再次走到已走過的 node 就是 cycle 起點
Update your browser to view this website correctly. Update my browser now