【力扣日记】面试题02.02 返回倒数第K个节点 | 链表 | 快慢指针

题目描述

实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。

类似019 删除链表的倒数第K个节点

算法思路

简单粗暴的:

class Solution:
    def kthToLast(self, head: ListNode, k: int) -> int:
        ls=[]
        while head:
            ls.append(head.val)
            head=head.next
        return ls[-k]

快慢指针:

class Solution:
    def kthToLast(self, head: ListNode, k: int) -> int:
        fast = head
        slow = head
        while k > 0:
            fast = fast.next
            k -= 1
        while fast != None:
            fast = fast.next
            slow = slow.next
        return slow.val

让快指针先行K步,然后快慢指针同步,当快指针走到尽头时,慢指针刚好是第K个节点。

发布了317 篇原创文章 · 获赞 44 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Heart_for_Ling/article/details/105527129