题解 | #删除链表中重复的结点#

删除链表中重复的结点

https://www.nowcoder.com/practice/fc533c45b73a41b0b44ccba763f866ef

public class Solution {
    public ListNode deleteDuplication(ListNode pHead) {
        // 处理空链表或者只有一个节点的情况
        // if (pHead == null || pHead.next == null) {
        //     return pHead;
        // }

        ListNode dummy = new ListNode(-1);
        dummy.next = pHead;
        ListNode prev = dummy;
        ListNode curr = pHead;

        while (curr != null && curr.next != null) {
            // 如果当前节点的值和下一个节点的值相等,就循环找到第一个不相等的节点
            if (curr.val == curr.next.val) {
                int val = curr.val;
                while (curr != null && curr.val == val) {
                    curr = curr.next;
                }
                // 删除重复节点
                prev.next = curr;
            } else {
                // 如果当前节点的值和下一个节点的值不相等,直接更新prev和curr
                prev = curr;
                curr = curr.next;
            }
        }
        return dummy.next;
    }
}

#剑指offerc##java##算法##算法笔试#
剑指Offer2-Java题解 文章被收录于专栏

剑指offer题解(java版)

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务