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

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

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

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;

    }

}

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄