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

    因为需要移走所有重复的元素,可能head会被移除,因而需要一个dummy node

    time: O(n), space: O(1)

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    class Solution {
        public ListNode deleteDuplicates(ListNode head) {
            if(head == null || head.next == null) {
                return head;
            }
            ListNode dummy = new ListNode(0);
            dummy.next = head;
            ListNode cur = dummy;
            while(cur.next != null && cur.next.next != null) {
                if(cur.next.val == cur.next.next.val) {
                    ListNode tmp = cur.next;
                    while(tmp != null && tmp.val == cur.next.val) {
                        tmp = tmp.next;
                    }
                    cur.next = tmp;
                } else {
                    cur = cur.next;
                }
            }
            return dummy.next;
        }
    }
  • 相关阅读:
    16平衡树
    15二叉检索树
    11用户权限
    10触发器
    8函数
    8存储过程
    linux下如何进入单用户模式
    RHEL6.4 字符模式下安装图形界面图文教程
    杂记
    Java内存管理(一):深入Java内存区域
  • 原文地址:https://www.cnblogs.com/fatttcat/p/10184677.html
Copyright © 2011-2022 走看看