描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表 1->2->3->3->4->4->5 处理后为 1->2->5
主要思想:先找到最后一个相等的节点,此处有一个while循环是个小难点,需要加强理解
刚开始创建了一个空的头节点,指向本链表的头节点,比较好返回删除之后的节点
/*function ListNode(x){
this.val = x;
this.next = null;
}*/
function deleteDuplication(pHead)
{
// write code here
if(pHead ===null) return null;
let head = {
val:0,
next:pHead
}
let p = head;
let next = head.next;
while(next){
//想通过这个循环一直找到最后一个相等的节点
if(next.next!==null&&next.val===next.next.val){
while(next.next!=null&&next.val ==next.next.val){
next = next.next;
}
//此时p==next.next;next=p.next
p.next = next.next;
next = next.next;
}else{
p = p.next;
next = next.next;
}
}
return head.next
}
module.exports = {
deleteDuplication : deleteDuplication
};