zoukankan      html  css  js  c++  java
  • [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;
        }
    }



  • 相关阅读:
    使用Beetle实现http代理服务
    Socket Tcp服务吞吐测试工具
    实现高性能稳定的socket tcp通讯经验分享
    Silverlight自定义按钮模板
    值得研究的 工作流 开源项目
    值得研究的 开源数据库
    值得研究的 创建PDF 组件
    值得研究的 开源图形引擎
    通用的NTier模型合理么?
    值得研究的 RSS阅读器
  • 原文地址:https://www.cnblogs.com/lz87/p/10460739.html
Copyright © 2011-2022 走看看