题解 | #删除有序链表中重复的元素-II#
删除有序链表中重复的元素-II
http://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode deleteDuplicates (ListNode head) {
// write code here
if(head == null || head.next == null){
return head;
}
ListNode newHead = new ListNode(-1);
newHead.next = head;
ListNode currentNode = head;
ListNode pre = newHead;
// int count = 0;
// while(currentNode != null && currentNode.next != null){
// if(currentNode.val == currentNode.next.val){
// count ++;
// currentNode.next = currentNode.next.next;
// }else{
// if(count >0){
// pre.next = currentNode.next;
// count = 0;
// }else{
// pre = currentNode;
// }
// currentNode = currentNode.next;
// }
// }
// if(count > 0){
// pre.next = currentNode.next;
// }
while(currentNode != null){
ListNode next = currentNode.next;
boolean needDel = false;
if(next != null && currentNode.val == next.val){
needDel = true;
}
if(!needDel){
pre = currentNode;
currentNode = currentNode.next;
}else{
int value = currentNode.val;
ListNode toBeDel = currentNode;
while(toBeDel != null && toBeDel.val == value){
next = toBeDel.next;
pre.next = next;
toBeDel = next;
}
currentNode = pre.next;
}
}
return newHead.next;
}
}