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
.
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(null == head || null == head.next) //只有1个节点或者空时,直接返回头结点 15 return head; 16 ListNode temp = new ListNode(0); 17 temp.next = head; 18 head = temp;//加一个头结点,不放内容 19 20 ListNode pre = head; 21 ListNode behind = head.next; 22 ListNode front = behind.next; 23 24 while(null != front){ 25 if(behind.val == front.val){ //如果有相同的,删除掉 26 while(null != front && behind.val == front.val) 27 front = front.next; 28 if(null == front) 29 pre.next = null; 30 else{ 31 pre.next = front; 32 behind = front; 33 front = front.next; 34 continue; 35 } 36 } 37 if(null != front){ 38 front = front.next; 39 behind = behind.next; 40 pre = pre.next; 41 } 42 } 43 return head.next; 44 } 45 }
Please call me JiangYouDang!