• [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;
        }
    }



  • 相关阅读:
    Docker-常用命令
    5分钟了解折半插入排序
    Spring框架之IOC原理
    使用JS实现简单喷泉效果
    坦克大战系列6-API常用函数说明1
    坦克大战系列6-API常用函数说明2
    为什么要使用-Docker
    SQL语言:存储过程
    使用原生JS重构简单的音乐播放器
    [区间DP]ZOJ3541 The Last Puzzle
  • 原文地址:https://www.cnblogs.com/lz87/p/10460739.html
Copyright © 2020-2023  润新知