码迷,mamicode.com
首页 > 编程语言 > 详细

LeetCode – Remove Duplicates from Sorted List II (Java)

时间:2015-07-19 08:51:05      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:

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.

 

解题思路:

对比I,这道题要求不保留任何重复的节点。所以需要一个index记录当前已经保留的节点的末端,然后用另一个节点去遍历,并在这个过程中对重复值和新值进行处理。

难点在于对corner cases的处理。刚开始刷题不久,还没有养成预先写test的习惯,所以在这些特例上,花了很多时间。

Corner Case:[1,2,2],[0,1,2,2,3,4],[1,1],[1],[1,1,2,2]

 1         if(head!=null){
 2              ListNode c1 = new ListNode(head.val-1);
 3              c1.next = head;
 4              ListNode re = c1, c2 = head;
 5              int count = 0, temp = c1.next.val;
 6              
 7              while(c2!=null){
 8                  if(temp!=c2.val && count>1){
 9                      c1.next = c2;  
10                      temp = c2.val;
11                      count = 1;
12                  }else if(temp!=c2.val && count==1){
13                      c1 = c1.next;
14                      temp = c2.val;
15                      count = 1;
16                  }else 
17                  count ++;
18                  c2 = c2.next;              
19          }
20              if(count > 1) c1.next = null;
21              return re.next;         
22      }
23          return null;

 

LeetCode – Remove Duplicates from Sorted List II (Java)

标签:

原文地址:http://www.cnblogs.com/7070roro/p/4658128.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!