| 删除链表中倒数第N个节点

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。


输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]
示例 2:

输入:head = [1], n = 1
输出:[]
示例 3:

输入:head = [1,2], n = 1
输出:[1]

| 题解


# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:"""解题思路一:1.找规律可得,倒数第n个元素为正数第s个元素 s = count - n +12.定义新的头指针,循环遍历添加到新的头指针,当start == n 时,跳过3.返回新的头指针解题思路二:1.定义快慢指针 让fast指针先移动n步,然后fast 和 slow 同时后移 直道fast.next 为空2.如果connt == n 即要删除的元素为第一个元素,可作为特殊情况处理"""def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:# 解题思路一cur = head# 计算链表的长度count = 0while cur:count += 1cur = cur.next# 倒数第n个元素为正数第s个元素 s = count - n +1s = count - n + 1# 定义新的指针点并且添加虚拟头节点node = ListNode()new_head = nodetail = nodestart = 0c = headwhile c:start += 1if start == s:c = c.nextcontinueelse:tail.next = ctail = cc = c.nexttail.next = None  # 因为tail指针一直指向尾节点,有可能尾节点后面是要删除的节点,索引把尾节点后面的节点断开return new_head.next  # 返回新的头指针# 解法二# 定义快慢指针 让fast指针先移动n步,然后fast 和 slow 同时后移 直道fast.next 为空fast = headslow = head# 定义新的头指针和虚拟头节点node = ListNode()new_head = nodetail = nodecount = 0while fast and slow:if count >= n:fast = fast.nexttail.next = slowtail = slowslow = slow.nextelse:fast = fast.nextcount += 1# 如果connt == n 即要删除的元素为第一个元素,可作为特殊情况处理if count == n:  return head.next# 跳过count == n 的节点tail.next = tail.next.next# 返回新的头指针return new_head.next

python 删除链表中倒数第N个节点相关推荐

  1. Java 算法之 “删除链表中倒数第k个节点”【钢镚核恒】

    删除链表中倒数第k个节点 简介 题目描述:给定⼀个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点[Leetcode] 链表中倒数第k个节点 , 和这篇文章使用的方法一致,就是变成找到倒数k+ ...

  2. python删除链表的倒数第k个节点,剑指offer 链表中的倒数第K个节点 Python and C++

    题目描述 输入一个链表,输出该链表中倒数第k个结点. 思路 假设链表中的节点数大于等于k个,那么一定会存在倒数第k个节点,首先使用一个快指针先往前走k步,然后两个指针每次走一步,两个指针之间始终有k的 ...

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

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

  4. 力扣—— 19. 删除链表的倒数第 N 个结点(java)、剑指 Offer 22. 链表中倒数第k个节点(java)

    19. 删除链表的倒数第 N 个结点(java) 一.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 进阶:你能尝试使用一趟扫描实现吗? 输入:head = [1,2,3 ...

  5. 代码随想录Day04 | LeetCode24. 两两交换链表中的节点、LeetCode19. 删除链表的倒数第N个节点、LeetCode160. 链表相交、LeetCode142. 环形链表Ⅱ

    LeetCode24. 两两交换链表中的节点 力扣题目链接 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换). 示例 ...

  6. python 链表中倒数第k个节点

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

  7. 删除链表的倒数第n个节点 python_LeetCode 19.删除链表的倒数第N个节点(Python)

    题目: 给定一个链表,删除链表的倒数第 n个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表 ...

  8. 刻意练习:LeetCode实战 -- Task11. 删除链表的倒数第N个节点

    背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...

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

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

最新文章

  1. JQUERY使用技巧~总结
  2. python 使用mysqldb模块通过ssh隧道连接mysql
  3. jvm加载class原理
  4. 用python计算准确率_分词结果准确率、召回率计算-python(示例代码)
  5. qq空间登陆 cookie_把这篇 Session、Cookie、Token看完,和面试官随便谈人生
  6. Hello, cnblog!
  7. canvas实现抽奖插件—大转盘和九宫格
  8. 《统计学习方法》—— 信息增益、决策树算法(ID3,C4.5)以及python3实现
  9. Android实践--监測网络状态
  10. Inf2Cat, signability test failed.驱动编译出错
  11. idea安装Scala插件
  12. vsftp如何确定地址_VSFTP配置参数详解
  13. bootstrap表单样式
  14. cryptojs php,CryptoJS简单使用方法
  15. IE下载vsix插件踩坑
  16. JavaScript获取标签的属性和DOM操作属性
  17. 【2020总结】脚踏实地,仰望星空
  18. 太阳能光伏自动跟踪追日逐日实训系统QY-PV20
  19. wps里表格中间的字怎么置顶_怎么把wps文字放在最中间
  20. Tetris项目总结

热门文章

  1. webview加载本地html_安卓webview html5 自动播放本地视频,网上视频,可以循环播放...
  2. 3. Leetcode 16. 最接近的三数之和 (数组-双向双指针)
  3. 交通预测论文笔记:Spatio-Temporal Graph Convolutional Networks: A Deep Learning Frameworkfor Traffic Forecast
  4. 文巾解题 319. 灯泡开关
  5. Python编码风格规范
  6. android 图片圆角 遮罩_Android 自定义View练手Demo(一)实现圆角遮罩效果
  7. python虚拟环境-conda
  8. 第六章 模型的验证、监控与调优
  9. 唯品会API网关设计与实践--转
  10. Lesson 16.1016.1116.1216.13 卷积层的参数量计算,1x1卷积核分组卷积与深度可分离卷积全连接层 nn.Sequential全局平均池化,NiN网络复现