[面试题 02.02. ]返回倒数第 k 个节点(33)

76 阅读1分钟

力扣传送门 leetcode-cn.com/problems/kt…

这个之前写过类似的删除倒数第N个节点,知道要用快慢指针,也知道 先走然后一块走,最后就是 但是自己重新写还是写不对,又看了题解才明白,我是自己设置了一个头部节点但是也写错了

    // 快慢指针都指向头节点
    let pre = head;
    let cur = head;

// 快指针pre先走k步
    while(k--){
        pre = pre.next;
        
    }
    console.log(pre, k)
    // 然后一块走k步 cur的
    while(pre){
    // 最后一次循环 这一步慢指针指向目标指针 快指针应该指向了空
        pre = pre.next;
        cur = cur.next; 
    }

    return cur.val;