劍指 Offer 18 3 刪除鍊錶中重複的節點

2021-10-08 19:10:17 字數 1009 閱讀 7759

題目描述:

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。 例如,鍊錶1->2->3->3->4->4->5 處理後為 1->2->5

解題思路:

1、雙指標:

由於該鍊錶是有序的,因此重複節點一定是連在一起的。同時考慮到頭指標phead是重複節點的情況,可以人為地增加乙個頭節點head,然後將頭指標連在一起:head.next = phead。採用快慢指標的做法,初始化指標pre = head,cur = phead,當cur.val == cur.next.val時,不斷地更新cur指標,找到重複指標的最後乙個指標的下乙個指標:cur = cur.next,然後使用pre.next = cur刪除這些重複節點;否則更新curpre指標,重複上述過程直至cur或者cur.next為空。整個過程也可以使用基於遞迴實現。

實現**:

//刪除有序鍊錶中重複的節點

//解法1:雙指標

public listnode deleteduplication

(listnode phead)

else

}return head.next;

}//解法2:基於遞迴

public listnode deleteduplication1

(listnode phead)

else

}

劍指Offer 鍊錶 刪除鍊錶的節點

給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點,返回刪除後的鍊錶的頭節點。解題思路 演算法流程 複雜度分析 實現 definition for singly linked list.class listnode def init self,x self.val x self.ne...

劍指offer 鍊錶 刪除鍊錶中的重複節點

題目在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 思路分析 思路一 使用linkedlist儲存不重複節點,重構鍊錶 分析評價 這個方法是乙個比較直接且容易想到的方法,使用時只要注意一些情況...

劍指offer 刪除鍊錶中重複的結點(鍊錶)

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 class solution listnode ans newlistnode 1 ans next phead listnode link a...