Python 程序员面试金典 面试题 02.02. 返回倒数第 k 个节点

Posted Drink_Coffee_Cat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 程序员面试金典 面试题 02.02. 返回倒数第 k 个节点相关的知识,希望对你有一定的参考价值。


笨办法:先遍历链表得出链表长度然后就可以了

class Solution:
    def kthToLast(self, head: ListNode, k: int) -> int:
        cur = head
        cnt = 1

        while cur.next:
            cnt += 1
            cur = cur.next
        
        cur = head
        for i in range(cnt - k):
            cur = cur.next
        
        return cur.val

最佳解法:快慢指针

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

以上是关于Python 程序员面试金典 面试题 02.02. 返回倒数第 k 个节点的主要内容,如果未能解决你的问题,请参考以下文章

程序员面试金典-面试题 16.08. 整数的英语表示

程序员面试金典-面试题 10.09. 排序矩阵查找

程序员面试金典-面试题 16.06. 最小差

程序员面试金典面试题 03.05. 栈排序

程序员面试金典面试题 08.11. 硬币

程序员面试金典面试题 01.08. 零矩阵