题解 | #链表中倒数最后k个结点#

链表中倒数最后k个结点

https://www.nowcoder.com/practice/886370fe658f41b498d40fb34ae76ff9

/*
 * function ListNode(x){
 *   this.val = x;
 *   this.next = null;
 * }
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param pHead ListNode类
 * @param k int整型
 * @return ListNode类
 */
function FindKthToTail(pHead, k) {
    // 快慢指针
    // 快慢指针开始都指向链表头,之后快指针先走k步,然后再同时移动快慢指针
    // 此时快慢指针距离一直为k,当快指针到达尾部时,慢指针正好到倒数k个元素的位置
    let fast = pHead;
    let slow = pHead;
    // 快指针先走k步
    for (let i = 1; i <= k; i++) {
        // 如果移动不到k步,说明链表过短,没有倒数k
        if (!fast) {
            return null;
        }
        fast = fast.next;
    }
    // 快慢指针同时走
    while (fast) {
        fast = fast.next;
        slow = slow.next;
    }
    return slow;
}
module.exports = {
    FindKthToTail: FindKthToTail,
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 15:39
点赞 评论 收藏
分享
程序员饺子:正常 我沟通了200多个 15个要简历 面试2个 全投的成都的小厂。很多看我是27直接不会了😅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务