力扣(LeetCode)删除排序链表中的重复元素II 个人题解

给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。

思路和上一题类似(参考 力扣(LeetCode)删除排序链表中的重复元素 个人题解))

只不过这里需要用到一个前置节点来排除第一个节点就是重复元素的特例。

同样是使用快慢针解决问题。不再详细叙述。

代码如下:

class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        ListNode ret = new ListNode(0);
        ret.next = head;
        ListNode slow = ret, fast = head;

        while (fast != null && fast.next != null) {
            if (slow.next.val == fast.next.val) {
                fast = fast.next.next;
                while (fast != null && fast.val == slow.next.val)
                    fast = fast.next;
                slow.next = fast;
            } else {
                slow = slow.next;
                fast = fast.next;
            }
        }

        return ret.next;
    }
}
原文地址:https://www.cnblogs.com/axiangcoding/p/10372470.html