📜  | |第 36 题(1)

📅  最后修改于: 2023-12-03 15:06:08.735000             🧑  作者: Mango

| | 第 36 题

简介

| | 第 36 题是一道与链表相关的算法题目。给定一个链表,需要找到该链表的倒数第 k 个节点,并返回该节点。此题需要对链表有一定的了解和掌握。

题目描述

给定一个链表,找到该链表的倒数第 k 个节点,并返回该节点。

示例:

输入: 1->2->3->4->5 和 k = 2
输出: 4

说明:

  • 给定的 k 保证是有效的。
思路分析

此题可以使用双指针法来解决。我们定义两个指针,一个快指针 f,一个慢指针 s,让 f 先走 k 步,这样,s 和 f 之间就会有 k 个距离,当 f 指向链表尾部的 null 节点时,s 指向的节点就是倒数第 k 个节点。

代码实现
class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

class Solution:
    def getKthFromEnd(self, head: ListNode, k: int) -> ListNode:
        f = s = head
        for _ in range(k):
            f = f.next
        while f:
            f = f.next
            s = s.next
        return s
时间复杂度

此题中使用了双指针法来解决问题,时间复杂度为 O(n)。