[leetcode]Remove Duplicates from Sorted List II

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.

算法思路:

[leetcode]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 hhead = new ListNode(0);
 5         hhead.next = head;
 6         ListNode one = hhead;
 7         ListNode two = head;
 8         boolean tag = false;
 9         while(two != null){
10             tag = false;
11             while(two.next != null && two.next.val == two.val) {
12                 two = two.next;
13                 tag = true;
14             }
15             if(tag){
16                 two = two.next;
17                 one.next = two;
18             }else{
19                 one = two; 
20                 two = two.next;
21             }
22         }
23         return hhead.next;
24     }
25 }

posted on 2014-07-20 15:14  喵星人与汪星人  阅读(186)  评论(0编辑  收藏  举报