当前位置: 首页 > wzjs >正文

广东网络品牌建站公司天津市网站建设+网页制作

广东网络品牌建站公司,天津市网站建设+网页制作,网站广告调词平台,网站支持qq登录怎么做Problem: 19. 删除链表的倒数第 N 个结点 题目:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 文章目录整体思路完整代码时空复杂度时间复杂度:O(L)空间复杂度:O(1)整体思路 这段代码旨在解决一个经…

Problem: 19. 删除链表的倒数第 N 个结点
题目:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

文章目录

  • 整体思路
  • 完整代码
  • 时空复杂度
    • 时间复杂度:O(L)
    • 空间复杂度:O(1)

整体思路

这段代码旨在解决一个经典的链表问题:删除链表的倒数第 N 个结点 (Remove Nth Node From End of List)。问题要求在单次遍历中找到并删除链表的倒数第 n 个节点。

该算法采用了一种非常高效且经典的 双指针法(Two Pointers),结合 哨兵节点(Sentinel Node) 来巧妙地完成任务。其核心逻辑步骤如下:

  1. 哨兵节点 (Dummy Node)

    • 算法首先创建了一个 dummy 节点,并让它的 next 指针指向原始链表的头节点 head
    • 目的:这一技巧极大地简化了边界情况的处理。特别是当需要删除的节点恰好是头节点时,如果没有 dummy 节点,我们需要编写额外的逻辑来处理 head 的变化。有了 dummy 节点,任何节点的删除操作都统一为修改其前驱节点next 指针,而每个节点(包括原始的头节点)都保证有一个有效的前驱节点。
  2. 双指针初始化与建立间距

    • 初始化两个指针 pretail,都指向 dummy 节点。在这里,tail 将作为“快指针”,而 pre 将作为“慢指针”。
    • 通过一个 for 循环,先让快指针 tail 向前移动 n 步。
    • 这一步完成后,pretail 之间就形成了一个固定的、包含 n 个节点的“窗口”或“间距”。
  3. 双指针同步移动

    • 接下来,进入一个 while 循环,循环的条件是 tail.next != null
    • 在循环中,同时将 pretail 两个指针向后移动一步。
    • 由于它们之间的距离是固定的,当快指针 tail 到达链表的最后一个节点时(即 tail.nextnull),循环终止。
  4. 定位与删除

    • 当循环终止时,由于 tailpre 前面 n 个节点,tail 已经走到了链表末尾,那么慢指针 pre 的位置就恰好是待删除节点的前一个节点
    • 执行删除操作:pre.next = pre.next.next;。这一行代码让 prenext 指针“跳过”了待删除的节点,直接指向了待删除节点的下一个节点,从而有效地将其从链表中移除。
  5. 返回结果

    • 所有操作完成后,dummy.next 仍然指向整个链表的(可能是新的)头节点。返回 dummy.next 即可。

完整代码

/*** Definition for singly-linked list.*/
class ListNode {int val;ListNode next;ListNode() {}ListNode(int val) { this.val = val; }ListNode(int val, ListNode next) { this.val = val; this.next = next; }
}class Solution {/*** 删除链表的倒数第 n 个结点。* @param head 链表的头节点* @param n 要删除的倒数位置* @return 删除节点后链表的头节点*/public ListNode removeNthFromEnd(ListNode head, int n) {// 创建一个哨兵节点(dummy),其 next 指向原始头节点。// 这可以统一处理删除头节点时的边界情况。ListNode dummy = new ListNode(0, head);// pre 指针最终将指向待删除节点的前一个节点。ListNode pre = dummy;// tail 指针作为快指针,用于与 pre 保持一个固定距离。ListNode tail = dummy;// 步骤 1: 让快指针 tail 先向前移动 n 步。// 这样 pre 和 tail 之间就有了 n 个节点的间距。for (int i = 0; i < n; i++) {tail = tail.next;}// 步骤 2: 同时移动 pre 和 tail 指针,直到 tail 到达链表的最后一个节点。while (null != tail.next) {tail = tail.next;pre = pre.next;}// 步骤 3: 此时 pre 正是待删除节点的前一个节点。// 执行删除操作:让 pre 的 next 指针跳过待删除节点。pre.next = pre.next.next;// 返回哨兵节点的下一个节点,即为修改后链表的头节点。return dummy.next;}
}

时空复杂度

时间复杂度:O(L)

  1. 指针移动
    • 第一个 for 循环,快指针 tail 移动了 n 步。
    • 第二个 while 循环,tail 指针从第 n 个节点移动到最后一个节点,移动了 L - n 步(其中 L 是链表的总长度)。
    • 两个指针的总移动步数约为 n + (L-n) = L
  2. 单次遍历:整个过程相当于对链表进行了一次完整的线性扫描。

综合分析
算法的时间复杂度与链表的长度 L 成线性关系。因此,时间复杂度为 O(L)

空间复杂度:O(1)

  1. 主要存储开销:算法只创建了 dummy, pre, tail 等几个额外的指针变量。
  2. 空间大小:这些变量的数量是固定的,与输入链表的长度 L 无关。

综合分析
算法没有使用任何与输入规模成比例的额外数据结构。因此,其额外辅助空间复杂度为 O(1)。这是一个非常高效的原地算法。


文章转载自:

http://PPq4qU4b.gftnx.cn
http://zUPu8bsS.gftnx.cn
http://j4kVc1km.gftnx.cn
http://QPUmLbmx.gftnx.cn
http://TrDGIfk7.gftnx.cn
http://6Pv4PZCH.gftnx.cn
http://KdVfmBau.gftnx.cn
http://S2qRIWM4.gftnx.cn
http://iwXCskC5.gftnx.cn
http://fWwaSxYy.gftnx.cn
http://sH9VsPvs.gftnx.cn
http://6mzUtOdu.gftnx.cn
http://6HKYeneQ.gftnx.cn
http://DpukPuZe.gftnx.cn
http://CtL8J9qS.gftnx.cn
http://0yNElIeL.gftnx.cn
http://GGelEtxE.gftnx.cn
http://z1SqQ323.gftnx.cn
http://xljhbxBH.gftnx.cn
http://0BZyDF0M.gftnx.cn
http://yq2ZJTRC.gftnx.cn
http://zSmNBysr.gftnx.cn
http://UiW96uyg.gftnx.cn
http://Y6OKrlgA.gftnx.cn
http://f9vPVOeF.gftnx.cn
http://6vbese8s.gftnx.cn
http://vHXb8KLK.gftnx.cn
http://3p0PAHJA.gftnx.cn
http://kK3rbzBw.gftnx.cn
http://J12aKQSo.gftnx.cn
http://www.dtcms.com/wzjs/767966.html

相关文章:

  • 盘锦做网站企业建设工程信息网官网重庆
  • 电商设计年终总结网站建设优化服务新闻
  • 学习吧网站休闲度假村网站建设方案
  • 一般人做不了咨询顾问关键词排名优化教程
  • 网页设计与网站组建网站后端都需要什么意思
  • 网站建设费属于宣传费吗家装效果图网站
  • 网站外链建设可以提升网站权重对还是错吉安建设局官方网站
  • 网站开发属于什么会计科目怎么原创视频网站
  • 朝阳市建设厅查询网站做目录网站注意事项
  • 网站推广经验做网站需要数据库么
  • iis 里没有网站吗昆明网
  • 给公司做门户网站 可以用凡客吗网站关键词排名优化电话
  • 网站建设去哪里学linux做网站优势
  • 专业的设计网站cc彩球网站总代理怎么做
  • 怎样做网站的签约设计师广州做响应式网站
  • 网站建设 提供源码食品网站建设建议
  • 网站定制开发流程php论坛源码下载
  • 网站备案方法wordpress 小米主题制作
  • 广西网络网站建设天津网站建设信息科技有限公司
  • 松原企业网站建设软文的目的是什么
  • 广告制作公司网站哈尔滨大型网站开发
  • 网站建设项目说明书大连网站制作的公司
  • 黄冈公司做网站举报网站制度建设方面
  • 长春专业做网站的公司有哪些深圳设计网站公司网站
  • 比较好的海报设计网站南宁关键词优化服务
  • 吉林省建设厅网站二建管理系统网站开发说明文档
  • 站长统计app官方网站魔客吧wordpress主题如何安装
  • 专门做问卷调查的一个网站河北建设工程信息网辅助评标系统
  • 用织梦做的网站 图片打开很慢企业网页页面设计
  • 吉林省建设厅网站评职称系统广州建设银行网站