首页 > 编程语言 > 详细

Remove Duplicates from Sorted List leetcode java

时间:2014-07-23 12:01:16      阅读:340      评论:0      收藏:0      [点我收藏+]

题目:

Given a sorted linked list, delete all duplicates such that each element appear only once.

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

 

题解:

这道题是经典的双指针问题,用两个指针一前一后指向链表。如果两个指针指向的值相等,那么就让第二个指针一直往后挪,挪到与第一个指针不同为止。然后让第一个指针的next指向第二个指针,两个指针同时往后挪,进行下面的操作。

需要注意,当list的结尾几个node是重复的时候,例如1->2->3->3,那么ptr2会指向null,需要特殊处理,令ptr1.next = null,这样list尾部就不会丢。

其他情况就不用特殊处理结尾了,因为结尾没有重复值,只须遍历就够了,不用特殊处理尾部。

 

代码如下: 

 

 1     public ListNode deleteDuplicates(ListNode head) {
 2         if(head == null || head.next == null)
 3             return head;
 4         
 5         ListNode ptr1 = head;
 6         ListNode ptr2 = head.next;
 7         
 8         while(ptr2!=null){
 9             if(ptr1.val == ptr2.val){
10                 ptr2 = ptr2.next;
11                 if(ptr2==null)
12                     ptr1.next = null;
13             }else{
14                 ptr1.next = ptr2;
15                 ptr1 = ptr1.next;
16                 ptr2 = ptr2.next;
17             }
18         }
19 
20         return head;
21     }

Remove Duplicates from Sorted List leetcode java,布布扣,bubuko.com

Remove Duplicates from Sorted List leetcode java

原文:http://www.cnblogs.com/springfor/p/3862042.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!