劍指offer刷題筆記
阿新 • • 發佈:2020-02-16
刪除連結串列中重複的結點:較難
在一個排序的連結串列中,存在重複的結點,請刪除該連結串列中重複的結點,重複的結點不保留,返回連結串列頭指標。
例如,連結串列1->2->3->3->4->4->5 處理後為 1->2->5
public class Solution { public ListNode deleteDuplication(ListNode pHead) { if(pHead==null||pHead.next==null)return pHead; ListNode p0=new ListNode(-2147483648);//構造前站節點來防止第一個節點被刪除的慘劇 ListNode p1=p0; ListNode p2=pHead; int temp=pHead.val; int dup=0;//dup==1表示有重複 while (p2.next!=null){//迴圈外還有處理? if(p2.next.val==temp){ dup=1; p2=p2.next;// } else{ if (dup==0){ p1.next=p2; p1=p1.next; } dup=0; temp=p2.next.val; p2=p2.next; } } if (dup==0)p1.next=p2; if (dup==1)p1.next=null;//p1每次接收都是後面一串 p0=p0.next;//過河拆橋,去掉頭部哨兵 return p0; } }
&n