題目
思路:
既然是 Linked List,我們可以宣告一個指標
curr指向第一個 node,用 while 迴圈一次檢查一個 node (檢查完將指標移到下一個 node)- 不能直接用
head來移動,因為到時候回傳答案的時候需要回傳這個head
- 不能直接用
設定 while 可以繼續檢查的條件:有時要先寫 while 的內容,才會比較確定 while 條件應該怎麼寫,這時可以先寫
while True:,等內容寫完再來改條件寫 while 內容
假如
curr.val跟下一個一樣,就把 next 接到下下個1
2if curr.val == curr.next.val:
curr.next = curr.next.next但假如下下個也一樣呢?=> 把上面的
if改成while,讓最後curr.next所指的 val 一定是不一樣的改成 while 之後,檢查條件會被重複執行。因為
curr.next有可能會是None,所以條件改為while curr.val == (curr.next and curr.next.val):離開 while 之後:
curr = curr.next # 把指標移到下一個 node,以便下次的檢查
回去修改 while 條件:什麼條件成立我們才能繼續檢查(執行 while 內容)?
- 首先
curr不能是Nonecurr有可能是None,因為我們一直把它指向下一個 Node,到了盡頭curr就會是None
- 即使
curr.next是None,還是可以順利執行迴圈內容 - 結論:條件為
while curr:
- 首先
離開 while 之後就大功告成,回傳答案
head
Python3 solution:
1 | # Definition for singly-linked list. |