JAVA OJ練習第7題——刪除鏈表中重複的結點

牛客鏈接:刪除鏈表中重複的結點

題目描述
在一個排序的鏈表中,存在重複的結點,請刪除該鏈表中重複的結點,重複的結點不保留,返回鏈表頭指針。 例如,鏈表1->2->3->3->4->4->5 處理後爲 1->2->5

思路:
在這裏插入圖片描述

1、首先添加一個頭節點,以方便碰到第一個,第二個節點就相同的情況
2、設置 pre ,cur指針, pre指針指向當前確定不重複的那個節點,而cur指針相當於工作指針,一直往後面搜索。
3、最後返回新頭。
代碼如下:

public class Solution {
    public ListNode deleteDuplication(ListNode pHead)
    {
        if (pHead==null || pHead.next==null)
        {
            return pHead;
        }
        ListNode newHead = new ListNode(-1);
        newHead.next = pHead;
        ListNode pre  = newHead;
        ListNode cur = newHead.next;
        while(cur != null) {
        //重複節點
            if(cur.next != null
                && cur.val == cur.next.val){
                while(cur.next != null
                    && cur.val == cur.next.val) {
                    cur = cur.next;
                }
                pre.next = cur.next;
                cur = cur.next;
            }else {
                pre = pre.next;
                cur = cur.next;
            }
        }
        return newHead.next;
    }
}

下一題:鏈表的迴文結構
在這裏插入圖片描述

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