[LeetCode] 82. Remove Duplicates from Sorted List II

Posted Push your limit!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode] 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.

Example 1:

Input: 1->2->3->3->4->4->5
Output: 1->2->5

Example 2:

Input: 1->1->1->2->3
Output: 2->3

Algorithm:

1. Insert a dummy node to the head of the input linked list for easier implementation since the root node may change.

2. Use a slow pointer to track the previous node with distinct number, a fast pointer to track the last node of the same duplicated number.

3. Find the last node of the same duplicated number. If this last node is right next to the previous node with distinct number we know this last node has a distinct number. Simply forward both pointer. Otherwise, we know this last node has some nodes before it that have the same value. Skip all these duplicated nodes and set the fast pointer to the next node and start a new duplication check for a new value.

 

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        ListNode dummy = new ListNode(0), slow = dummy, fast = head;
        slow.next = fast;
        while(fast != null) {
            while (fast.next != null && fast.val == fast.next.val) {
                fast = fast.next;   
            }
            if (slow.next != fast) { 
                slow.next = fast.next; 
                fast = slow.next;     
            } else { 
                slow = slow.next;
                fast = fast.next;
            }       
        }
        return dummy.next;
    }
}



以上是关于[LeetCode] 82. Remove Duplicates from Sorted List II的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 82 Remove Duplicates from Sorted List II

LeetCode82 Remove Duplicates from Sorted List II

[LeetCode]82. Remove Duplicates from Sorted List II

[LeetCode] 82. Remove Duplicates from Sorted List II

leetcode:82. Remove Duplicates from Sorted List II(Java)解答

一天一道LeetCode#82. Remove Duplicates from Sorted List II