小视频平台源码,删除链表中重复的结点应该这样做

小视频平台源码,删除链表中重复的结点应该这样做

//思路:
//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;
}

以上就是小视频平台源码,删除链表中重复的结点应该这样做, 更多内容欢迎关注之后的文章

posted @ 2024-11-23 10:03  云豹科技-苏凌霄  阅读(10)  评论(0)    收藏  举报