双指针删除重复链表中的元素
while循环一般指两个节点对应的值相同时,往右移动指针。直到不同时,才进行链的拼接操作
* function ListNode(x){
* this.val = x;
* this.next = null;
* }
*/
/**
*
* @param head ListNode类
* @return ListNode类
*/
function deleteDuplicates( head ) {
// write code here
// 双指针
if(!head) { return head;}
let p1 = head;
let p2 = p1;//p2 = p1;//左指针
while(p1){
p1 = p1.next;//右指针
while(p1 && p1.val == p2.val){
p1 = p1.next;
}
// 一旦跳出上while循环意味着当前遇到第一个不满足p1.val == p2.val
p2.next = p1;
p2 = p1;
}
return head;
}
module.exports = {
deleteDuplicates : deleteDuplicates
};