刪除重複例如:從排序清單
- 鑑於1→ 1→ 2,返回1→ 2。
- 鑑於1→ 1→ 2→ 3→ 3,返回1→ 2→ 3。
我的問題是爲什麼返回的對象是head
但不是node
?爲什麼node.next
意味着節點遍歷移動到下一個節點?我很困惑:
public class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head == null)
return null;
ListNode node = head;
while(node.next != null) {
if(node.val == node.next.val) {
node.next = node.next.next;
} else {
node = node.next;
}
}
return head;
}
}
注意此實現只支持在列表中彼此相鄰的副本 –
deleteDuplicates()返回頭部,因爲從頭部可以訪問整個列表。從任何其他節點你可能無法(除非它是一個雙向鏈表),但即使你可以,如果你知道你的出發點在哪裏,最簡單的工作就是列表。 – LarsH
@GregHilston:如果它是一個排序列表,那麼重複必須彼此相鄰,不是嗎? – LarsH