刪除鏈表中的重複元素

題目:在一個排序的鏈表中,存在重複的結點,請刪除該鏈表中重複的結點,重複的結點不保留,返回鏈表頭指針。 

例如,鏈表1->2->3->3->4->4->5 處理後爲 1->2->5


public ListNode deleteDuplication(ListNode pHead)
    {
        if(pHead==null){
            return pHead;
        }
        ListNode G=new ListNode(0);
        G.next=pHead;
        ListNode cur=G;//爲了保存新的鏈表的頭指針以便於返回
        ListNode pre=pHead;
        while(pre!=null){
            boolean flage=false;
            //該步驟是爲了找出重複的元素,並且刪除重複的元素到只剩下一個
            while(pre.next!=null&&pre.val==pre.next.val){//用while循環是因爲有重複的次數可能不只1次
                flage=true;//說明是重複的元素
                pre=pre.next;//把後面的一個元素覆蓋前面一個元素
            }
            //刪除剩下的那一個重複的元素,並且跳過之後的步驟
            if(flage){
                pre=pre.next;//把後面的一個元素覆蓋前面一個
                continue;
            }
            //該部分爲不存在重複的情況
            cur.next=pre;
            cur=cur.next;
            pre=pre.next;
        }
        cur.next=null;//將鏈表的最後置爲空
        return G.next;//
    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章