标签:
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
.
Note here we need to consider head of the list. For example, for input 1 -> 1, we need to return null.
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { val = x; } 7 * } 8 */ 9 public class Solution { 10 public ListNode deleteDuplicates(ListNode head) { 11 if (head == null || head.next == null) 12 return head; 13 while (head.next != null && head.val == head.next.val) { 14 while (head.next != null && head.val == head.next.val) 15 head = head.next; 16 if (head.next != null) 17 head = head.next; 18 else 19 return null; 20 } 21 ListNode current = head, next1, next2; 22 while (current != null && current.next != null && current.next.next != null) { 23 next1 = current.next; 24 next2 = current.next.next; 25 if (next1.val != next2.val) { 26 current = current.next; 27 } else { 28 while (next2 != null && next1.val == next2.val) 29 next2 = next2.next; 30 current.next = next2; 31 } 32 } 33 return head; 34 } 35 }
Remove Duplicates from Sorted List II 解答
标签:
原文地址:http://www.cnblogs.com/ireneyanglan/p/4814867.html