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

2022-01-26 07:08:32 字數 1096 閱讀 4083

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。

輸入:1->2->3->3->4->4->5

輸出:1->2->5

遍歷鍊錶,使用pre指標儲存當前節點,使用last指標儲存下乙個節點。

last.val == last.next.val時,向後遍歷,找到last.val != last.next.val的節點,連線節點pre.next = last.next

last.val != last.next.val時,更新prelast節點。

使用head節點儲存頭節點,防止出現一開始出現重複節點的情況。

public listnode deleteduplication(listnode phead)

pre.next = last.next; //當前節點的下一節點 = 重複節點的最後乙個節點的下一節點

last = last.next; //更新last節點

}else

}return head.next; //返回頭節點

}

使用last指標儲存下一節點。

如果phead.val == last.val,說明當前節點 = 下一節點。向後找到第乙個與當前節點不同的節點,並進入遞迴,判斷新節點是否重複。

phead.val != last.val,進入遞迴,將當前節點與下一節點連線,並返回當前節點。

最後返回頭節點。

public listnode deleteduplication(listnode phead)

return deleteduplication(last); //進入遞迴,判斷下一節點是否重複

}else

}

劍指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...

劍指Offer 鍊錶 刪除鍊錶中重複的結點

題目 在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5。注意該鍊錶為排序鍊錶,重複的節點不保留哦!public class listnode 1 遞迴 遞迴的方法就像是先判斷第乙個節點和之後的節...