这个题目就是考察的边界条件,方法上没什么特别的。我们仍然要注意的是,遇到链表题目时,最好几个伪头结点。
public ListNode deleteDuplication(ListNode pHead)
{
if(pHead == null || pHead.next == null) //为null或者只有一个节点,直接返回
return pHead;
ListNode pre = new ListNode(pHead.val-1), result = pre;
pre.next = pHead;
//next指向的是pre.next.next
ListNode next = pre.next.next;
while(pre != null) {
while(next != null && next.val == pre.next.val)
next = next.next;
if(next != pre.next.next) { //说明有重复的
pre.next = next;
if(pre.next == null)
return result.next;
next = pre.next.next;
} else {
pre = pre.next;
if(pre == null || pre.next == null)
return result.next;
next = pre.next.next;
}
}
return result.next;
}