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
.
参考:http://www.cnblogs.com/feiling/p/3259474.html
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { 7 * val = x; 8 * next = null; 9 * } 10 * } 11 */ 12 public class Solution { 13 public ListNode deleteDuplicates(ListNode head) { 14 if(head == null){ 15 return head; 16 } 17 //在头结点之前添加safeguard,防止处理一开始就是连续节点的情况 18 ListNode safe = new ListNode(Integer.MIN_VALUE); 19 safe.next =head; 20 head = safe; 21 22 ListNode pre = head, cur = head.next; 23 while(cur != null){ 24 boolean flag = false; 25 while(cur != null && cur.next != null){ 26 if(cur.val == cur.next.val){ 27 cur.next = cur.next.next; 28 flag = true; 29 }else{ 30 break; 31 } 32 } 33 //处理剩余的一个重复节点 34 if(flag){ 35 pre.next = cur.next; 36 cur = pre.next; 37 continue; 38 } 39 40 pre = cur; 41 cur = cur.next; 42 } 43 44 return head.next; 45 } 46 }
[Leetcode]-- Remove Duplicates from Sorted List II
原文:http://www.cnblogs.com/RazerLu/p/3540021.html