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

示例:

给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.

————————
(1)使用 双指针,首先第一个指针先从头节点移动n步,然后让双指针同时向前移动,知道有一个指针移动到队列的尾部。这里注意在头节点head前加了一个空节点。这样能避免出现的边界问题。

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = Noneclass Solution:def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:node=ListNode(-1)  # 创建一个空指针node.next=head  # 指针的下一个节点为headfirst=second=node  # 创建啥双指针for i in range(n):  # 使第一个指针移动n位first=first.nextwhile first.next:  # 使两个指针同时移动first=first.nextsecond=second.nextsecond.next=second.next.next  # 删除倒数第N个结点return node.next

(2)使用递归,每次递归返回的是当前节点的下一个节点。同时返回的时候使所表示的属于逆序的值m加一。

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = Noneclass Solution:def __init__(self):self.m = 0def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:if not head:return Nonehead.next = self.removeNthFromEnd(head.next,n) # 返回当前节点的下一个节点self.m += 1 当前节点属于倒数第几个节点return head.next if self.m==n else head  # 根据当前节点是否是倒数第N个结点决定返回的是当前节点,还是当前节点的下一个节点

leetcode —— 19. 删除链表的倒数第N个节点相关推荐

  1. [链表|多解法] leetcode 19 删除链表的倒数第N个节点

    [链表|多解法] leetcode 19 删除链表的倒数第N个节点 1.题目 题目链接 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2-&g ...

  2. 【亡羊补牢】挑战数据结构与算法 第59期 LeetCode 19. 删除链表的倒数第N个节点(链表)

    仰望星空的人,不应该被嘲笑 题目描述 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. ...

  3. leetcode 19. 删除链表的倒数第N个节点(双指针)

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

  4. [leetcode]19.删除链表的倒数第N个节点

    给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 进阶:你能尝试使用一趟扫描实现吗? 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] ...

  5. LeetCode 19删除链表的倒数第N个节点-中等

    给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 进阶:你能尝试使用一趟扫描实现吗? 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: ...

  6. Leetcode 19. 删除链表的倒数第N个节点

    原题链接 解法:双指针 思路:第一个点可以能被删除,所以需要一个虚拟头节点.被删除的点位于倒数第n的位置,因为是单链表,即找到倒数n + 1最后,想要删除这个节点必须要保留它的前一个节点使其p-> ...

  7. C++ leetcode 19. 删除链表的倒数第N个节点 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。

    一.思路: 遍历一遍存储节点到vector数组中,然后利用数组指向倒数第n个,将倒数n-1的节点的next指向倒数n的next 二.代码: class Solution { public:ListNo ...

  8. Leetcode算法Java全解答--19. 删除链表的倒数第N个节点

    Leetcode算法Java全解答–19. 删除链表的倒数第N个节点 文章目录 Leetcode算法Java全解答--19. 删除链表的倒数第N个节点 题目 想法 结果 总结 代码 我的答案 大佬们的 ...

  9. 领扣(LeetCode)删除链表的倒数第N个节点 个人题解

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

最新文章

  1. java实体外键_如何在JPA中添加用户实体和好友关系实体的外键
  2. R语言ggplot2可视化NHANES数据集年龄和身高的关系并按照性别因子分析男性和女性的差异
  3. Win64 驱动内核编程-18.SSDT
  4. hdu 模拟 贪心 4550
  5. Windows 服务全攻略(1)
  6. 图像检索中为什么仍用BOW和LSH
  7. vim编辑器的常用技巧
  8. mysql为什么要分库_我们为什么要分库分表
  9. L1为什么具有稀疏性
  10. Windows下怎样设置jar包开机自启动运行
  11. Android libcore添加JNI调用Hal层接口问题
  12. vi编辑器的学习使用(十三)
  13. ZOJ-1654 Place the Robots 拆行拆列构图+二分匹配 Or 最大独立点集+TLE
  14. pythonandroid自动化测试仪器_使用Python进行Android自动化测试
  15. linux修改文件用户组,linux命令 修改文件、文件夹所属用户、用户组
  16. 水星路由器DNS服务器未响应,水星路由器进不去设置怎么办
  17. 如何用更短时间写出高质量的博客文章经验分享
  18. 【渝粤教育】国家开放大学2018年秋季 1020t国际私法 参考试题
  19. 机器学习-关键词:正则化、过拟合、决策树
  20. python和按键精灵哪个稳定_按键精灵教程,学了这个你也能做出稳定的脚本

热门文章

  1. 使用nagios监控io,内存
  2. Windows下资源泄漏检测
  3. 初学UML,画了几个UML图
  4. 给控件做数字签名之三:进行数字签名
  5. Redis面试 - 集群模式
  6. jQuery+CSS3实现404背景动画特效【转】
  7. 分布式系统关注点(21)——构建「易测试」系统的“六脉神剑”
  8. 不重启docker容器修改 容器中的时区
  9. Github图片加速心得
  10. C#LeetCode刷题-回溯算法