[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.

https://oj.leetcode.com/problems/remove-duplicates-from-sorted-list-ii/

 

思路:需要一个dummy head辅助。

public class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        ListNode newHead = new ListNode(-1);
        newHead.next = head;
        ListNode pre = newHead;
        ListNode cur = head;

        while (cur != null && cur.next != null) {
            if (cur.val == cur.next.val) {
                while (cur != null && cur.next != null && cur.val == cur.next.val) {
                    cur = cur.next;
                }
                cur = cur.next;
                pre.next = cur;
            }

            else {
                pre = cur;
                cur = cur.next;
            }

        }

        return newHead.next;

    }

    public static void main(String[] args) {
        ListNode head = ListUtils.makeList(1, 1, 2, 3, 3);
        ListUtils.printList(head);
        head = new Solution().deleteDuplicates(head);
        ListUtils.printList(head);
    }

}
View Code

 

 

第二遍记录:

  注意pre和dummyHead的用法

public class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        if(head==null||head.next==null)
            return head;
        ListNode newHead = new ListNode(-1);
        newHead.next=head;
        
        ListNode pre = newHead;
        ListNode cur = head;
        
        while(cur!=null&&cur.next!=null){
            if(cur.val==cur.next.val){
                while(cur.next!=null&&cur.val==cur.next.val){
                    cur=cur.next;
                }
                cur=cur.next;
                pre.next=cur;
                
            }else{
                pre=cur;
                cur=cur.next;
            }
            
        }
        return newHead.next;
    }
}

 

posted @ 2014-06-29 23:51  jdflyfly  阅读(128)  评论(0编辑  收藏  举报