删除排序链表中的重复元素 II
作者:互联网
力扣https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。
返回同样按升序排列的结果链表。
var deleteDuplicates = function(head) {
//定义一个虚拟节点
let dummyHead=new ListNode(-1)
//虚拟节点指向链表头部
dummyHead.next=head
//定义一个遍历的指针,初始指向虚拟节点
let p=dummyHead
while(p){
//判空中断
if(!p.next || !p.next.next){
break
}
//指针后面的两个相邻元素相等,说明有重复元素,需要进行操作
if(p.next.val===p.next.next.val){
//首先把当前节点存下来
let now = p
//p指针往下滑动,直到跳过相等元素,或者到链表尾部
while(p.next.next && p.next.next.val===p.next.val){
p=p.next
}
//取得重复元素后面的第一个节点
let head = p.next.next
//当前节点指向后面的节点,这样就把重复片段删除掉了
now.next=head
//此时注意,p要重新指向当前节点
p = now
}else{
//指针后面的两个相邻元素不等,指针向下滑动
p=p.next
}
}
//最后返回
return dummyHead.next
};
标签:II,head,dummyHead,val,next,链表,排序,节点 来源: https://blog.csdn.net/cctvcqupt/article/details/120525423