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.

 

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        ListNode newHead = new ListNode(0);
		ListNode currentNode = newHead;
		ListNode first = head;
		boolean distinct = true;
		while(first != null){
			if(first.next != null){
				if(first.val == first.next.val)
					distinct = false;
				else{
					if(distinct){
						currentNode.next = first;
						currentNode = currentNode.next;
					}
					else
						distinct = true;
				}				
			}
			//the last node
			else{
				if(distinct){
					currentNode.next = first;
					currentNode = currentNode.next;
				}
			}
			
			first = first.next;			
		}
		currentNode.next = null;
		newHead = newHead.next;
		return newHead;    
    }
}

  

posted @ 2014-06-04 12:41  Averill Zheng  阅读(107)  评论(0编辑  收藏  举报