美文网首页
[刷题记录] 剑指 Offer 22. 链表中倒数第k个节点

[刷题记录] 剑指 Offer 22. 链表中倒数第k个节点

作者: 不知道鸭 | 来源:发表于2021-12-23 09:16 被阅读0次

    2021.11.28算法笔记

    剑指 Offer 22. 链表中倒数第k个节点

    输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。
    例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。

    示例:
    给定一个链表: 1->2->3->4->5, 和 k = 2.
    返回链表 4->5.
    即输入[1,2,3,4,5] 2,输出[4,5]

    自己思路:
    是一个数组截取的思路
    将输入的数组,倒数K个放入另一个数组即可;或者将前面K-1个删除即可;

    代码如下;

    /**
    
     * @param {ListNode} head
     * @param {number} k
     * @return {ListNode}
       */
        var getKthFromEnd = function(head, k) {
       let length = head.length
       var array = []
       let i=k
       for(i=k;i--;i>0){
           array.push(head[length-i])
       }
       return array
        };
        //出错!typeerror!
        因为head是ListNode,不是数组,不能使用push方法来追加新的元素。
    

    解题思路:

    n可以理解为快指针和慢指针的间隔
    当快指针走到最后,则慢指针就是走到倒数第k个节点

    代码:

    var getKthFromEnd = function(head, k) {
        let fast = head
        let low = head
        let n = 0
        while(fast) {
            fast = fast.next
            if (n >= k) {
                low = low.next
            }
            n++
        }
        return low
    };
    

    补充:NodeList对象

    是DOM操作取出的集合(实际上是基于DOM结构动态查询的结果),用来保存一组有序的节点,可以通过位置来访问这些节点,它并不是array的实例。
    Nodelist最大的特点就是它的时效性,DOM结构的变化能自动反映在Node List对象中。也就是说当DOM结构发生变化时,NodeList立刻会发生变化。

    相关文章

      网友评论

          本文标题:[刷题记录] 剑指 Offer 22. 链表中倒数第k个节点

          本文链接:https://www.haomeiwen.com/subject/awefqrtx.html