LeetCode刷题---删除排序链表中的重复元素 II

发布时间:2024年01月24日

在这里插入图片描述
解题思路:

1.首先定义虚拟节点dummy,dummy的下一个节点指向head节点。
2.定义辅助节点cur指向dummy节点
3.开始遍历链表,如果当前节点cur的下一个节点和下下一个节点都不为空的情况下,对cur的下一个节点和下下一个节点的值进行判断。
4.如果当前节点cur的下一个节点和下下一个节点的val值相等,则删除cur的下一个节点,使得cur的下一个节点指向cur的下下个节点。
5.重复第4步,直至cur的下一个节点和下下一个节点的val值不相等,此时cur节点前进。

代码实现:

 public ListNode deleteDuplicates(ListNode head) {
        if (head == null) {
            return head;
        }
        
        ListNode dummy = new ListNode(0, head);

        ListNode cur = dummy;
        while (cur.next != null && cur.next.next != null) {
            if (cur.next.val == cur.next.next.val) {
                int x = cur.next.val;
                while (cur.next != null && cur.next.val == x) {
                    cur.next = cur.next.next;
                }
            } else {
                cur = cur.next;
            }
        }

        return dummy.next;
    }

官方题解:LeetCode官方题解

文章来源:https://blog.csdn.net/weixin_47109902/article/details/135833240
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。