题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
/*function ListNode(x){
this.val = x;
this.next = null;
}*/
function deleteDuplication(pHead){
// 只有0或1个节点
if(pHead==null || pHead.next===null){
return pHead
}
// 有重复节点
if(pHead.val===pHead.next.val){
let node=pHead.next;
while(node!=null&&node.val===pHead.val){
// 跳过值与当前节点相同的全部节点,找到第一个与当前节点不同的节点
node=node.next;
}
// 从第一个与当前节点不同的节点开始递归
return deleteDuplication(node);
}else{
pHead.next=deleteDuplication(pHead.next);
return pHead
}
}