82. Remove Duplicates from Sorted List II

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.

//剑指offer删除链表中重复的结点

For example,
Given 1->2->3->3->4->4->5, return 1->2->5.
Given 1->1->1->2->3, return 2->3.

class Solution {

    public ListNode deleteDuplicates(ListNode head) {

        if (head == null)

            return null;

        ListNode dummy = new ListNode(0);

        dummy.next = head;

        ListNode pre = dummy;

        ListNode cur = head;

        while (cur != null) {

            while (cur.next != null && cur.val == cur.next.val)

                cur = cur.next; //遇到重复元素,cur就指向最后一个重复元素

            if (pre.next == cur)

                pre = pre.next;

            else //此时遇到了重复元素,原本的cur改变了,如2->3->3->4,此时pre是2,cur指到了第二个3,则2直接指向4,相当于删去了重复元素

                pre.next = cur.next;

            cur = cur.next;

        }

        

        return dummy.next;

    }

}

posted @   MarkLeeBYR  阅读(77)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示