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

示例:

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

说明:

给定的 n 保证是有效的。

题解:

我们可以使用两个指针而不是一个指针。第一个指针从列表的开头向前移动 n+1n+1 步,而第二个指针将从列表的开头出发。现在,这两个指针被 nn 个结点分开。我们通过同时移动两个指针向前来保持这个恒定的间隔,直到第一个指针到达最后一个结点。此时第二个指针将指向从最后一个结点数起的第 nn 个结点。我们重新链接第二个指针所引用的结点的 next 指针指向该结点的下下个结点。

删除链表的倒数第 N 个元素

public ListNode removeNthFromEnd(ListNode head, int n) { ListNode dummy = new ListNode(0); dummy.next = head; ListNode first = dummy; ListNode second = dummy; // Advances first pointer so that the gap between first and second is n nodes apart for (int i = 1; i <= n + 1; i++) { first = first.next; } // Move first to the end, maintaining the gap while (first != null) { first = first.next; second = second.next; } second.next = second.next.next; return dummy.next;}

复杂度分析

时间复杂度:O(L)O(L),该算法对含有 LL 个结点的列表进行了一次遍历。因此时间复杂度为 O(L)O(L)。

空间复杂度:O(1)O(1),我们只用了常量级的额外空间。

双向链表删除节点时间复杂度_「十分钟学算法」删除链表的倒数第N个节点相关推荐

  1. python 文件路径_「按需学Python」 1. Glob库遍历路径/文件

    小前言: 本人Python小白,因为最近想整理下近10几年的老照片,然后就有了写脚本批处理的想法.初始需求其实很简单,就是筛选自己想要的照片到指定文件夹,然后按照exif信息重命名照片为拍摄时间_拍摄 ...

  2. amd cpu不能在cmd环境下运行java代码_「我们一起学Java02」JDK、JRE、JVM简介,Java开发平台的搭建...

    Hello,各位头条的读者大家好!接下来一段时间小编将和大家一起学习Java,"我们一起学Java"专题将会持续更新,欢迎大家关注.这里是"我们一起学Java" ...

  3. 【LeetCode】剑指 Offer 22. 链表中倒数第k个节点

    [LeetCode]剑指 Offer 22. 链表中倒数第k个节点 文章目录 [LeetCode]剑指 Offer 22. 链表中倒数第k个节点 一.遍历 二.双指针 总结 一.遍历 先遍历统计链表长 ...

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

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

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

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

  6. 青铜三人行之删除链表的倒数第N个节点

    先说一个消息,为了方便互相交流学习,青铜三人行建了个微信群,感兴趣的伙伴可以扫码加下面的小助手抱你入群哦! 每周一题,代码无敌.这周,「青铜三人行」为你带来了一道关于"链表的题目" ...

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

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

  8. 常考数据结构与算法:删除链表的倒数第n个节点

    题目描述 给定一个链表,删除链表的倒数第n个节点并返回链表的头指针 例如, 给出的链表为:1->2->3->4->5, n= 2.删除了链表的倒数第n个节点之后,链表变为1-& ...

  9. LeetCode第19题;删除链表的倒数第N个节点

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

最新文章

  1. 来来来,个人blog第一弹——WordPress的Linux运行环境
  2. 面试官出的MySQL索引问题,这篇文章全给你解决!
  3. javascript 基础下
  4. 使用LightBDD轻松实现行为驱动开发
  5. 随机梯度下降的实现细节
  6. php对接V免签支付教程_【全网首发】最新版影视小程序搭建教程完整版
  7. dictionary在python中什么意思_Python 字典(Dictionary)操作详解
  8. 从源码角度解释 fragment 坑(一)
  9. LeetCode93 Restore IP Addresses
  10. 深入理解java虚拟机笔记之一
  11. jqgrid本地数据例子_FMS财务系统:日常数据核对与处理
  12. 英语语法快速入门1--简单句(附思维导图)
  13. 特斯拉4D成像毫米波雷达与木牛科技早期开源的产品几乎一模一样?
  14. 宝塔实测-搭建LightPicture开源图床系统
  15. WLAN技术之WLAN安全
  16. 大学生计算机专业英文求职,计算机专业大学生英文求职信范文
  17. Mycat 分片规则---不以规矩,不能成方圆
  18. Windows 7 开机自动拨号 常用的五种方法
  19. 袖珍电子书打先锋,魔灯(Moodle)服务器做后盾
  20. 对讲机外装蓝牙对讲适配器方案

热门文章

  1. java8 camel_WildFly 8的Camel子系统集成了Java EE –入门
  2. jaxb_JAXB –新手的观点,第2部分
  3. JasperReports:棘手的部分
  4. Spring Boot和Angular 2入门食谱
  5. JDK 9 @不建议使用的注释增强功能
  6. Java注释是一个大错误
  7. 使用Junit和Easytest进行数据驱动的测试
  8. delayqueue_在DelayQueue中更改延迟,从而更改顺序
  9. dateformat线程_Java最佳实践–多线程环境中的DateFormat
  10. Java中连接字符串的最佳方法