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

问题

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

思绪

《《剑指offer》11.链表中倒数第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;
    }
    原文作者:ConardLi
    原文地址: https://segmentfault.com/a/1190000018037889
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞