首页 > 编程语言 > 详细

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

时间:2019-02-14 01:03:19      阅读:240      评论:0      收藏:0      [点我收藏+]

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

 

思路和上一题类似(参考 力扣(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;
    }
}

 

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

原文:https://www.cnblogs.com/axiangcoding/p/10372470.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!