| 返回链表中倒数第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个节点相关推荐

  1. python 链表倒数第k个节点_链表-删除单链表中倒数第k个节点

    题目 实现一个函数,一个可以删除单链表中倒数第k个节点 难度 简单 分析 本题比较简单,实现方法多种多样,这里提供一种方法 首先明确一点,在单链表中删除倒数第k个节点,需要找到他的前一个节点,让前一个 ...

  2. 递增的整数序列链表的插入_每日算法题 | 剑指offer 链表专题 (5)链表中倒数第k个节点...

    点击上方"Jerry的算法和NLP",选择"星标"公众号 重磅干货,第一时间送达 题目 链表中倒数第k个节点 题目要求 输入一个链表的头结点,从尾到头反过来打印 ...

  3. 剑指offer:面试题22. 链表中倒数第k个节点

    题目:链表中倒数第k个节点 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1 ...

  4. 链表中倒数第k个节点

    链表中倒数第k个节点 [题目]: 输入一个链表,输出该链表中倒数第k个节点. 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1.2.3.4.5.6.这个链表的倒数第 3 个节点是值为 4 ...

  5. 链表中倒数第k个节点 1

    题意: 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5. ...

  6. 【每日一题】剑指 Offer 22. 链表中倒数第k个节点

    剑指 Offer 22. 链表中倒数第k个节点

  7. LeetCode-剑指 Offer 22. 链表中倒数第k个节点

    剑指 Offer 22. 链表中倒数第k个节点 思路一:利用快慢双指针 /*** Definition for singly-linked list.* struct ListNode {* int ...

  8. 《漫画算法2》源码整理-8 链表中倒数第K个节点元素

    链表中倒数第K个节点元素 public class KthFromEnd {public static Node findKthFromEnd(Node head, int k){Node p1 = ...

  9. 剑指 Offer 22. 链表中倒数第k个节点(C语言)

    输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1.2.3.4.5.6 ...

最新文章

  1. keil c语言模块化编程,keil C模块化编程总结
  2. 一个特别棒的远程在线学习方法的分享!!!妈妈再也不怕我的网课录屏啦学不进去啦!!!
  3. inteliji 优化
  4. dojo中的dojo/dom-construct
  5. Android 之PackageManager框架
  6. android imageview 设置网络图片,ImageView加载网络图片
  7. 001Diamond学习002使用
  8. IO多路复用和epoll反应堆
  9. win10去快捷方式箭头
  10. 未解——Matlab积分运算int函数
  11. soul群聊派对显示服务器异常,Soul群聊派对玩法攻略
  12. ibmt60升级linux,【原创】老兵不死,T60最强升级记
  13. intellij设置经典样式(背景为黑色的经典样式Darcula)
  14. 寻找苹果帝国的二当家
  15. 车载导航产品的数字地图格式
  16. JS 0~~100以内能被3整除也能被5整除的个数和总和
  17. 机器学习之朴素贝叶斯实现垃圾邮件过滤
  18. 什么软件可以文字转语音?这些软件值得收藏
  19. 64位百度云 catia v6_CATIA V6R2015百度云
  20. Office 文件解析入门

热门文章

  1. 159. Leetcode 122. 买卖股票的最佳时机 II (贪心算法-股票题目)
  2. 机器学习之数学基础(一)~maximum likelihood
  3. 文巾解题 198. 打家劫舍
  4. 随机样本选择——快速求解机器学习中的优化问题
  5. Hadoop学习之Hadoop集群的定制配置(一)
  6. Hadoop学习之MapReduce(四)
  7. Hadoop streaming: Exception in thread main java.io.IOException: No space left on device
  8. 使用KNN对MNIST数据集进行实验
  9. 秒杀架构中高性能可扩展高可用的一点思考
  10. Spring Remoting: Hessian--转