资讯专栏INFORMATION COLUMN

《剑指offer》11.链表中倒数第k个节点

cnTomato / 2132人阅读

摘要:题目输入一个链表,输出该链表中倒数第个结点。思路简单思路循环到链表末尾找到在找到节点需要循环两次。优化设定两个节点,间距相差个节点,当前面的节点到达终点,取后面的节点。本题目着重考察代码鲁棒性容错率需要考虑为,为,大于链表长度的情况代码

题目

输入一个链表,输出该链表中倒数第k个结点。

思路

简单思路: 循环到链表末尾找到 length 在找到length-k节点 需要循环两次。

优化:设定两个节点,间距相差k个节点,当前面的节点到达终点,取后面的节点。

前面的节点到达k后,后面的节点才出发。

本题目着重考察代码鲁棒性、容错率: 需要考虑head为null,k为0,k大于链表长度的情况

代码
    function FindKthToTail(head, k) {
      if (!head || !k) return null;
      let front = head;
      let behind = head;
      let index = 1;
      while (front.next) {
        index++;
        front = front.next;
        if (index > k) {
          behind = behind.next;
        }
      }
      return (k <= index) && behind;
    }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/108891.html

相关文章

  • PHPer也刷《剑指Offer》之链表

    摘要:剑指中链表相关题目俗话说光说不练假把式,既然学习了链表的基础概念和基本操作那我们一定要找些题目巩固下,下面来看剑指中的相关题目。题目分析合并两个排序的链表,需要分别比较两个链表的每个值,然后改变指针。 温故知新 链表由一个一个的作为节点的对象构成的,每一个节点都有指向下一个节点的指针,最后一个节点的指针域指向空。每个节点可以存储任何数据类型。 根据类型可以分为单链表、双链表、环形链表、...

    daydream 评论0 收藏0
  • 前端校招准备系列--使用js实现链表的操作

    摘要:思路查找倒数第个节点,可以看做是查找正序第个节点可以根据第一题的结果取数组的第个节点使用思路输入一个链表,反转链表后,输出新链表的表头。 前言   在写项目的时候会发现,并没有使用很多关于链表的东西,大多数情况使用的都是数组,但是由于在准备校招,很多公司都会考到这个问题,所以准备对链表的相关操作进行总结,并对其中的重难点进行强调,最后还会附加几道关于链表的算法题,那么现在就开始吧! ...

    fuyi501 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<