面试金典11(Python)—— 返回倒数第 k 个节点(简单)
概述:实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。
·
返回倒数第 k 个节点
概述:实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。
输入: 1->2->3->4->5 和 k = 2
输出: 4
方法一:双指针
思路:首先把快指针指向 k 位置,然后同步循环快慢指针,直到结束即可。
# 双指针
class Solution:
def kthToLast(self, head: ListNode, k: int) -> int:
pre, cur = head, head
for i in range(k):
cur = cur.next
while cur:
pre, cur = pre.next, cur.next
return pre.val
方法二:快慢指针
思路:思路和上面完全一致,用 fast 和 slow 来定于快慢指针。
# 快慢指针
class Solution:
def kthToLast(self, head: ListNode, k: int) -> int:
fast, slow = head, head
while k > 0:
fast = fast.next
k -= 1
while fast != None:
fast = fast.next
slow = slow.next
return slow.val
方法三:哨点指针
思路:亦可以称为单指针,首先遍历算出链表的长度 n ,然后在 n - k 的长度中循环即可。
# 哨点指针
class Solution:
def kthToLast(self, head: ListNode, k: int) -> int:
cur = head
n = 0
while cur != None:
n += 1
cur = cur.next
cur = head
for i in range(n - k):
cur = cur.next
return cur.val
总结
双指针妙啊!!!

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)