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

2021-10-02 09:43:41 字數 1039 閱讀 2052

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。 例如,鍊錶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 遞迴 遞迴的方法就像是先判斷第乙個節點和之後的節...