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

2021-09-27 01:32:25 字數 847 閱讀 9654

題目描述

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

一開始看錯了題,以為是刪除多餘的重複元素得到1->2->3->4->5,

初始cur=next=head,用cur表示當前值,while後移next得到next.val!=cur.val時的第乙個結點,然後cur.next=next連線即可。

發現看錯題後,在原來的基礎上,加了乙個pre的指標。而且考慮到存在第乙個結點就會因重複而被刪除的情況,所以採用鍊錶歸併時候的思路,先pre=0作為初始結點,直接構造出乙個新的鍊錶,最後返回pre.next即可。

具體**如下:

/*public class listnode }*/

public class solution

listnode head = new listnode(integer.max_value);

head.next = phead;

listnode pre  = head;//pre最開始在自定義結點上,指向的永遠是確定不重複的最後乙個數值

listnode last = head.next;//last是負責遍歷的工作指標,初始化指向原第乙個結點

while (last!=null)

pre.next = last.next;//pre指向下乙個需要判斷的值,如果重複會同樣覆蓋並指向下下乙個值

last = last.next;

}else

}return head.next;}}

劍指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 遞迴 遞迴的方法就像是先判斷第乙個節點和之後的節...