python 链表中倒数第k个节点
| 返回链表中倒数第K个节点
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。
例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。
示例:
给定一个链表: 1->2->3->4->5, 和 k = 2.
返回链表 4->5.
|题解
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = Noneclass Solution:"""提供三种解题思路:解题思路一: 1.先翻转整个链表2.遍历翻转后的链表,用count来记录位置, 然后用头插法继续翻转即可解题思路二:1.找规律可得,倒数第k个元素就是正数n-k+1个元素2.先遍历计算链表的长度,再遍历到第n-k+1的位置即可解题思路三:1.快慢指针解法,先让fast指针走k步2.当fast指针走k步后,fast指针和slow指针同步向后走,fast为None,slow就是倒数第k个位置"""def getKthFromEnd(self, head: ListNode, k: int) -> ListNode:# 解法一cur = head# 反转初始链表new_head = self.reserves(cur)new_head2 = Nonecount = 0while new_head:if count == k:breakelse:# 用头插法反转部分链表pre = new_head.nextnew_head.next = new_head2new_head2 = new_headnew_head = precount += 1return new_head2def reserves(self, head):new_head = Nonecur = headwhile cur:per = cur.nextcur.next = new_headnew_head = curcur = perreturn new_head# 解法二# 定义头指针,添加虚拟头节点new_head = Nonenode = ListNode()new_head = nodetail = node# 计算链表的长度count = 0cur = headwhile cur:count += 1cur = cur.next# s 为正向链表的位置s = count - k + 1count_1 = 0while head:if count_1 == s:breakelse:tail.next = headhead = head.nextcount_1 += 1return new_head.next#解法三fast = headslow = headcount = 0cur = headwhile fast:if count >= k:slow = slow.nextfast = fast.nextcount += 1return slow
python 链表中倒数第k个节点相关推荐
- python 链表倒数第k个节点_链表-删除单链表中倒数第k个节点
题目 实现一个函数,一个可以删除单链表中倒数第k个节点 难度 简单 分析 本题比较简单,实现方法多种多样,这里提供一种方法 首先明确一点,在单链表中删除倒数第k个节点,需要找到他的前一个节点,让前一个 ...
- 递增的整数序列链表的插入_每日算法题 | 剑指offer 链表专题 (5)链表中倒数第k个节点...
点击上方"Jerry的算法和NLP",选择"星标"公众号 重磅干货,第一时间送达 题目 链表中倒数第k个节点 题目要求 输入一个链表的头结点,从尾到头反过来打印 ...
- 剑指offer:面试题22. 链表中倒数第k个节点
题目:链表中倒数第k个节点 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1 ...
- 链表中倒数第k个节点
链表中倒数第k个节点 [题目]: 输入一个链表,输出该链表中倒数第k个节点. 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1.2.3.4.5.6.这个链表的倒数第 3 个节点是值为 4 ...
- 链表中倒数第k个节点 1
题意: 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5. ...
- 【每日一题】剑指 Offer 22. 链表中倒数第k个节点
剑指 Offer 22. 链表中倒数第k个节点
- LeetCode-剑指 Offer 22. 链表中倒数第k个节点
剑指 Offer 22. 链表中倒数第k个节点 思路一:利用快慢双指针 /*** Definition for singly-linked list.* struct ListNode {* int ...
- 《漫画算法2》源码整理-8 链表中倒数第K个节点元素
链表中倒数第K个节点元素 public class KthFromEnd {public static Node findKthFromEnd(Node head, int k){Node p1 = ...
- 剑指 Offer 22. 链表中倒数第k个节点(C语言)
输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1.2.3.4.5.6 ...
最新文章
- keil c语言模块化编程,keil C模块化编程总结
- 一个特别棒的远程在线学习方法的分享!!!妈妈再也不怕我的网课录屏啦学不进去啦!!!
- inteliji 优化
- dojo中的dojo/dom-construct
- Android 之PackageManager框架
- android imageview 设置网络图片,ImageView加载网络图片
- 001Diamond学习002使用
- IO多路复用和epoll反应堆
- win10去快捷方式箭头
- 未解——Matlab积分运算int函数
- soul群聊派对显示服务器异常,Soul群聊派对玩法攻略
- ibmt60升级linux,【原创】老兵不死,T60最强升级记
- intellij设置经典样式(背景为黑色的经典样式Darcula)
- 寻找苹果帝国的二当家
- 车载导航产品的数字地图格式
- JS 0~~100以内能被3整除也能被5整除的个数和总和
- 机器学习之朴素贝叶斯实现垃圾邮件过滤
- 什么软件可以文字转语音?这些软件值得收藏
- 64位百度云 catia v6_CATIA V6R2015百度云
- Office 文件解析入门
热门文章
- 159. Leetcode 122. 买卖股票的最佳时机 II (贪心算法-股票题目)
- 机器学习之数学基础(一)~maximum likelihood
- 文巾解题 198. 打家劫舍
- 随机样本选择——快速求解机器学习中的优化问题
- Hadoop学习之Hadoop集群的定制配置(一)
- Hadoop学习之MapReduce(四)
- Hadoop streaming: Exception in thread main java.io.IOException: No space left on device
- 使用KNN对MNIST数据集进行实验
- 秒杀架构中高性能可扩展高可用的一点思考
- Spring Remoting: Hessian--转