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) {
if (null == head || null == head.next)
return head;
ListNode new_head = new ListNode(0);
new_head.next = head;
ListNode tmp = new_head;
while (true) {
if (tmp.next != null && tmp.next.next != null
&& tmp.next.next.next != null) {
if (tmp.next.val == tmp.next.next.val
&& tmp.next.val == tmp.next.next.next.val) {
tmp.next = tmp.next.next; // 跳过后一个
} else if (tmp.next.val == tmp.next.next.val) {
tmp.next = tmp.next.next.next; // 跳过后两个
} else {
tmp = tmp.next; // 跳过后一个
}
}else if(tmp.next != null && tmp.next.next !=null){
if(tmp.next.val ==tmp.next.next.val)
tmp.next =null;
else
tmp = tmp.next.next;
}else{
break;
}
}
head = new_head.next;
new_head = null;
return head;
}
}
/**
* 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) {
if (null == head || null == head.next)
return head;
ListNode new_head = new ListNode(0);
new_head.next = head;
ListNode tmp = new_head;
while (true) {
if (tmp.next != null && tmp.next.next != null
&& tmp.next.next.next != null) {
if (tmp.next.val == tmp.next.next.val
&& tmp.next.val == tmp.next.next.next.val) {
tmp.next = tmp.next.next; // 跳过后一个
} else if (tmp.next.val == tmp.next.next.val) {
tmp.next = tmp.next.next.next; // 跳过后两个
} else {
tmp = tmp.next; // 跳过后一个
}
}else if(tmp.next != null && tmp.next.next !=null){
if(tmp.next.val ==tmp.next.next.val)
tmp.next =null;
else
tmp = tmp.next.next;
}else{
break;
}
}
head = new_head.next;
new_head = null;
return head;
}
}