【Leetcode刷题Python】剑指 Offer 22. 链表中倒数第k个节点

简介: Leetcode题目"剑指 Offer 22. 链表中倒数第k个节点"的Python解决方案,使用双指针法找到并返回链表中倒数第k个节点。

1 题目

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

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

示例:

给定一个链表: 1->2->3->4->5, 和 k = 2.

返回链表 4->5.

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2 解析

双指针,右指针先移动k个位置,再左右两个指针同时移动,直到左指针到达末尾,返回左指针即可。

3 python实现

class Solution:
    def getKthFromEnd(self, head: ListNode, k: int) -> ListNode:
        cur = head
        pre = head
        while cur:
            if k>0:
                cur = cur.next
                k-=1
            else:
                cur = cur.next
                pre = pre.next

        return pre
目录
相关文章
|
1月前
LeetCode第二十四题(两两交换链表中的节点)
这篇文章介绍了LeetCode第24题的解法,即如何通过使用三个指针(preNode, curNode, curNextNode)来两两交换链表中的节点,并提供了详细的代码实现。
17 0
LeetCode第二十四题(两两交换链表中的节点)
|
1月前
Leetcode第十九题(删除链表的倒数第N个节点)
LeetCode第19题要求删除链表的倒数第N个节点,可以通过快慢指针法在一次遍历中实现。
40 0
Leetcode第十九题(删除链表的倒数第N个节点)
|
1月前
【LeetCode 46】450.删除二叉搜索树的节点
【LeetCode 46】450.删除二叉搜索树的节点
15 0
|
3月前
|
算法
LeetCode第24题两两交换链表中的节点
这篇文章介绍了LeetCode第24题"两两交换链表中的节点"的解题方法,通过使用虚拟节点和前驱节点技巧,实现了链表中相邻节点的交换。
LeetCode第24题两两交换链表中的节点
|
3月前
|
算法 Python
【Leetcode刷题Python】剑指 Offer 33. 二叉搜索树的后序遍历序列
本文提供了一种Python算法,用以判断给定整数数组是否为某二叉搜索树的后序遍历结果,通过识别根节点并递归验证左右子树的值是否满足二叉搜索树的性质。
22 3
|
3月前
|
机器学习/深度学习 数据可视化 Python
如何可视化神经网络的神经元节点之间的连接?附有Python预处理代码
该博客展示了如何通过Python预处理神经网络权重矩阵并将其导出为表格,然后使用Chiplot网站来可视化神经网络的神经元节点之间的连接。
56 0
如何可视化神经网络的神经元节点之间的连接?附有Python预处理代码
|
3月前
|
Python
在线问诊 Python、FastAPI、Neo4j — 创建 节点关系
在线问诊 Python、FastAPI、Neo4j — 创建 节点关系
28 0
|
3月前
|
Python
在线问诊 Python、FastAPI、Neo4j — 创建 饮食节点
在线问诊 Python、FastAPI、Neo4j — 创建 饮食节点
28 0
|
3月前
|
Python
在线问诊 Python、FastAPI、Neo4j — 创建 疾病节点
在线问诊 Python、FastAPI、Neo4j — 创建 疾病节点
45 0
|
3月前
|
Python
在线问诊 Python、FastAPI、Neo4j — 创建 检查节点
在线问诊 Python、FastAPI、Neo4j — 创建 检查节点
31 0