链表中倒数第k个节点

Easy; 剑指 Offer 22; Linked List

1. Link

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

难度简单188收藏分享切换为英文接收动态反馈

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

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

示例:

3. 思路

  1. 方法1:

    1. 先把list 过一遍找到list length

    2. 计算正着数的node的position,即 list length - k

    3. 再从头遍历一遍找到对应位置的node,并返回

  2. 方法2

    1. 把list直接先reverse

    2. 找到正着数第k个node

    3. 把head 达到这个node的list再reverse一遍并返回

  3. 两种方法都是Time complexity: O(n), Space complexity: O(1)因为只是单纯把linked list 线性遍历,没有用到额外的空间

4. Coding

Method 1: 正找node的位置

Method 2: reverse list

Last updated

Was this helpful?