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

    For example,
    Given 1->2->3->3->4->4->5, return 1->2->5.
    Given 1->1->1->2->3, return 2->3.

    Solution:

     1 /**
     2  * Definition for singly-linked list.
     3  * public class ListNode {
     4  *     int val;
     5  *     ListNode next;
     6  *     ListNode(int x) {
     7  *         val = x;
     8  *         next = null;
     9  *     }
    10  * }
    11  */
    12 public class Solution {
    13     public ListNode deleteDuplicates(ListNode head) {
    14         if (head==null || head.next==null) return head;
    15         ListNode preHead = new ListNode(-1);
    16         preHead.next = head;
    17         ListNode cur = head;
    18         ListNode pre = preHead;
    19 
    20         //NOTE:We need to be every carefull about the condition,
    21         //because if the last node be deleted, the cur is null in the next step.
    22         //however, if the node before the last node is deleted, the cur is the last node in the next step,
    23         //we then need to stop also, otherwise cur.next.val is invalid.
    24         while (cur!=null && cur.next!=null){
    25             if (cur.val==cur.next.val){
    26                 while (cur.val==cur.next.val){
    27                     cur.next = cur.next.next;
    28                     if (cur.next==null)
    29                         break;
    30                 }
    31                 pre.next = cur.next;                                
    32                 cur = pre.next;
    33             } else {
    34                 pre = cur;
    35                 cur = cur.next;
    36                 if (cur.next==null)
    37                     break;
    38             }
    39         }
    40 
    41         return preHead.next;            
    42     }
    43 }
  • 相关阅读:
    C#使用各种时间戳及转换
    Rust借用机制的理解分析
    C# QRCoder 生成二维码
    Android 使用 JCIFS 访问共享文件
    Linux samba 创建共享盘
    WPF 等待对话框
    IIS实现Nginx功能:转发
    js jquery ajax跨域
    依赖注入
    .net standard
  • 原文地址:https://www.cnblogs.com/lishiblog/p/4100960.html
Copyright © 2011-2022 走看看