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

2021-08-20 21:00:32 字數 1292 閱讀 7211

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

情況一:從頭結點一直走到不含重複結點的節點處。即找到第乙個phead.val!=phead.next.val的結點,記該節點為頭結點,最後是要返回的結點!

情況二:依次刪除中間重複結點。該中情況中可以新增乙個頭結點,以便找到前驅節點,防止斷鏈!

原始碼如下:(有一些囉嗦)

/*

public

class listnode }*/

public

class solution

while(phead.val==phead.next.val)

phead=p;

if(phead==null || phead.next==null)//千萬注意該情況,否則容易出現空指標異常!改了好久才發現

}listnode p1=phead;

listnode pre=new listnode(0);

pre.next=phead;

while(p1!=null && p1.next!=null)else

p1=node;

pre.next=p1;}}

return phead;

}}

需要注意的點:一定要注意空指標異常!!!

簡化原始碼如下:

/*

public

class listnode }*/

public

class solution

listnode head=new listnode(0);

head.next=phead;

listnode node=head;

listnode p=phead;

while(p!=null && p.next!=null)

node.next=p;

}else

}return head.next;

}}

/*

public

class listnode }*/

public

class solution

if(phead.val==phead.next.val)

return deleteduplication(node);// 從第乙個與當前結點不同的結點開始遞迴

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