在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。 例如,鍊錶1->2->3->3->4->4->5 處理後為 1->2->5
設定3個結點,root指向頭節點,post指向迴圈結點之後的第乙個結點,pre指向迴圈結點的第乙個結點;
isrepeated標誌位標識是否重複;
如果post值等於pre值,刪除post結點,post向後移一步,isrepeated設為true;
如果post值不等於pre值,根據isrepeated判斷此時post指向的結點是否是重複結點,如果不是,post和pre都向後移一步,如果是重複結點,則判斷該結點是不是頭結點,如果是頭節點,則更新root和phead為當前結點,pre指向當前結點,post後移一位,如果不是頭節點,由於此時pre指向的是重複的結點,需要把pre刪掉,則更新root到pre的前乙個結點,把pre結點刪除。
/*
public class listnode }*/
public
class
solution
else
else
pre = root;
pre.next = post;
post = post.next;
pre = pre.next;
} isrepeated =
false;}
else}}
if(isrepeated)
pre = root;
pre.next = post;
}return phead;
}}
public
class
solution
if(phead.val == phead.next.val)
return
deleteduplication
(pnode)
;// 從第乙個與當前結點不同的結點開始遞迴
}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 遞迴 遞迴的方法就像是先判斷第乙個節點和之後的節...