• LeetCode OJ 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.

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

    相对于Remove Duplicates from Sorted List这个问题,这个问题是要把重复出现过的所有元素全部删除。我的想法是找出每一个数字段的起点和终点,如果这个数据段出现了重复元素,就把这个数据段整体删除。

     1 public class Solution {
     2     public ListNode deleteDuplicates(ListNode head) {
     3         if(head==null || head.next==null) return head;
     4         ListNode thead = new ListNode(-1);
     5         ListNode begin = thead;
     6         ListNode end = head;
     7         thead.next = head;
     8         
     9         int cur = head.val;
    10         while(end.next!=null){
    11             if(end.next.val==cur){
    12                 end = end.next;
    13             }
    14             else{
    15                 if(begin.next==end){
    16                     begin = end;
    17                     end = end.next;
    18                 }
    19                 else{
    20                     begin.next = end.next;
    21                     end = begin.next;
    22                 }
    23                 cur = end.val;
    24             }
    25         }
    26         if(begin.next==end) return thead.next;
    27         begin.next = null;
    28         return thead.next;
    29     }
    30 }
     
  • 相关阅读:
    java的hashcode和equals
    Spring 注入所得
    Action注入错误
    oracle中的替换函数replace和translate函数
    CSS div水平垂直居中和div置于底部
    java double类型保留两位小数4种方法
    Delphi写的DLL回调C#
    Java基础进阶整理
    j技术方案
    SetForegroundWindow激活窗口
  • 原文地址:https://www.cnblogs.com/liujinhong/p/5403505.html
Copyright © 2020-2023  润新知