//思路:
//1->2->2->3
//删除重复元素后 1->3
//1->2->2
//删除重复元素后 1
public ListNode deleteDuplication(ListNode pHead) {
if(pHead==null || pHead.next==null){
return pHead;
}
//设置虚拟头结点
ListNode dummyHead = new ListNode(-1);
dummyHead.next = pHead;
ListNode pre = dummyHead;
ListNode cur = pHead;
//pHead 链表至少有 1 个节点,cur 不为 null
while(cur.next!=null){
if(cur.val!=cur.next.val){ //相邻元素的值不相同,但是还不能说明 cur 不是重复元素,需要进一步判断
if(pre.next==cur){ // cur 不是重复元素
pre = cur;
}else{ //是重复元素删除
pre.next = cur.next;
}
}
cur = cur.next;
}
if(pre.next!=cur){ //针对:1->2->2 这种情况
pre.next =null;
}
return dummyHead.next;
}
https://www.mianshi.online,https://www.i9code.cn
本文由博客一文多发平台 OpenWrite 发布!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。