小影片平臺原始碼,刪除連結串列中重複的結點應該這樣做

云豹科技-苏凌霄發表於2024-11-23

小影片平臺原始碼,刪除連結串列中重複的結點應該這樣做

//思路:
//1->2->2->3
//刪除重複元素後 1->3
//1->2->2
//刪除重複元素後 1
public ListNode deleteDuplication(ListNode pHead) {
    if(pHead==null || pHead.next==null){
        return pHead;
    }
    //設定虛擬頭結點
    ListNode dummyHead = new ListNode(-1);
    dummyHead.next = pHead;

    ListNode pre = dummyHead;
    ListNode cur = pHead;

    //pHead 連結串列至少有 1 個節點,cur 不為 null
    while(cur.next!=null){
        if(cur.val!=cur.next.val){ //相鄰元素的值不相同,但是還不能說明 cur 不是重複元素,需要進一步判斷
            if(pre.next==cur){ // cur 不是重複元素
                pre = cur;
            }else{ //是重複元素刪除
                pre.next = cur.next;
            }
        }
        cur = cur.next;
    }

    if(pre.next!=cur){ //針對:1->2->2 這種情況
        pre.next =null;
    }

    return dummyHead.next;
}

以上就是小影片平臺原始碼,刪除連結串列中重複的結點應該這樣做, 更多內容歡迎關注之後的文章

相關文章