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

  • 时间:
  • 来源:互联网
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_34501351/article/details/103311744

82. 删除排序链表中的重复元素 II
题目描述:
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。

示例 1:
输入: 1->2->3->3->4->4->5
输出: 1->2->5

示例 2:
输入: 1->1->1->2->3
输出: 2->3

解题思路:
使用快慢指针,查看两个指针之间有没有重复的数,有的话,快的继续移动,直到找到不重复的。

   public ListNode deleteDuplicates(ListNode head) {
        ListNode dummyHead = new ListNode(0);
        dummyHead.next = head;
        ListNode slow = dummyHead;
        ListNode fast = head;
        while (fast != null) {
            if ((fast != null && fast.val != fast.next.val) || fast.next == null) {
                if (slow.next == fast) {
                    slow = fast;
                } else {
                    slow.next = fast.next;
                }
            }
            fast = fast.next;
        }
        return dummyHead.next;

    }

本文链接http://element-ui.cn/news/show-438.aspx