剑指 Offer 22. 链表中倒数第k个节点 -力扣(leetCode)JS解法

⚡️剑指 Offer 22. 链表中倒数第k个节点⚡️
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。

例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。

示例:
给定一个链表: 1->2->3->4->5, 和 k = 2.
返回链表 4->5.


⚡️分析⚡️

先遍历一次看看总共有sum个结点,再p指针回到链表头部,每次往后移动(sum-k)都减1,减到0即可返回
代码如下:

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @param {number} k
 * @return {ListNode}
 */
var getKthFromEnd = function(head, k) {
    let p = head;
    let sum = 0;
    while(p) {
        sum++;
        p = p.next;
    }
    p = head;
    let now = sum - k;
    while(now) {
        p = p.next;
        now--;
    }
    return p;
};

算法效率如图:
剑指 Offer 22. 链表中倒数第k个节点 -力扣(leetCode)JS解法_第1张图片




觉得该篇文章有用的请不要忘记忘记点击右下角的大拇指~

欢迎大家关注我的公众号:Smooth前端成长记录
公众号正在努力更新CSDN博客内容,想方便阅读博客的C友可以来关注我的公众号以便获得更优良的阅读体验~
在这里插入图片描述

你可能感兴趣的:(剑指offer,leetcode力扣,链表,leetcode)