算法挑战10(双指针)

5 阅读1分钟

坚持就是成功!

83.删除排序链表中的重复元素

给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表

思路:思路跟数组删除重复元素很像,只是链表的操作方式跟数组不太一样

定义两个指针

快指针每找到一个与慢指针不一样的节点

就让慢指针指向这个快指针指着的节点

var deleteDuplicates = function(head) {
    let fast = head;
    let slow = head;

    while(fast !== null){
        if(fast.val !== slow.val){
            slow.next = fast;
            slow = slow.next;
        }
    fast =fast.next;
    //fast都到头,没找到下一个与slow不同的节点,就需要手动断开一下链表
    if(fast === null){
        slow.next =null;
    }
    }

    return head;
};