新闻详情

新闻详情

首页 / 资讯中心 / 详情

链表(3)

发布时间:2026/10/1 16:18:26来源:尧图网络
链表(3)
一、链表中环的入口结点给一个长度为n链表若其中包含环请找出该链表的环的入口结点否则返回null。数据范围 n≤100001结点值10000要求空间复杂度 O(1)时间复杂度 O(n)import java.util.*; /* public class ListNode { int val; ListNode next null; ListNode(int val) { this.val val; } } */ public class Solution { public ListNode EntryNodeOfLoop(ListNode pHead) { // 快、慢指针 // 假设有环二者终会相遇 // 在相遇点让其中一个回到起点随后二者以相同的步伐走每次走一步最终二者将在环的入口节点相遇 ListNode fast, slow; fast slow pHead; while (fast ! null fast.next ! null) { fast fast.next.next; slow slow.next; if (fast slow) { fast pHead; while (fast ! slow) { fast fast.next; slow slow.next; } return fast; } } return null; } }运行结果二、链表中倒数最后k个结点输入一个长度为 n 的链表设链表中的元素的值为返回该链表中倒数第k个节点。如果该链表长度小于k请返回一个长度为 0 的链表。数据范围0≤n≤1050≤≤1090≤k≤109要求空间复杂度 O(n)时间复杂度 O(n)进阶空间复杂度 O(1)时间复杂度 O(n)import java.util.*; /* * public class ListNode { * int val; * ListNode next null; * public ListNode(int val) { * this.val val; * } * } */ public class Solution { public ListNode FindKthToTail (ListNode pHead, int k) { // 换个角度倒数第 k 个节点可以转换成该节点到末尾 null 的距离即往后走几步到达 null这个几就是 k // 所以不妨设置两个指针 p1、p2。先让 p1 往前走 k 步这是为了让 p1 和 p2 保持恒定的间距 k。 // 随后 p1、p2 同步走一次走一步。 // 当 p1 先走到 null 时p2 所指向的节点即为倒数第 k 个节点 ListNode p1, p2; p1 p2 pHead; // p1 先走 k 步 for (int i 0; i k; i) { if (p1 null i k) { // 链表长度小于 k 时p1 会在未走满 k 步前提前走到 null return null; } p1 p1.next; } // p1、p2 同步走 while (p1 ! null) { p1 p1.next; p2 p2.next; } return p2; } }运行结果三、删除链表的倒数第n个节点给定一个链表删除链表的倒数第n个节点并返回链表的头指针例如给出的链表为: 1→2→3→4→5, n2.删除了链表的倒数第 nn个节点之后,链表变为1→2→3→5.数据范围 链表长度 0≤n≤1000链表中任意节点的值满足 0≤val≤100要求空间复杂度 O(1)时间复杂度 O(n)import java.util.*; /* * public class ListNode { * int val; * ListNode next null; * public ListNode(int val) { * this.val val; * } * } */ public class Solution { public ListNode removeNthFromEnd (ListNode head, int n) { ListNode dummy new ListNode(-1); dummy.next head; // 还是同样的 p1, p2 // 只不过 p2 要寻找的目标是倒数第 n 个节点的前驱节点 // 现在 p1 的起点是 headp2 的起点是 dummy // 题目保证 n 是有效的 ListNode p1 head, p2 dummy; // p1 先走 n 步 for (int i 0; i n; i) { p1 p1.next; } // p1、p2 一起走 while (p1 ! null) { p1 p1.next; p2 p2.next; } // 此时 p2 是倒数第 n 个节点的前驱节点 p2.next p2.next.next; return dummy.next; } }运行结果
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

什么样的智能体数据才算优质?——基于ACE视角的大语言模型智能体数据生成研究 2026/10/1 17:03:32

什么样的智能体数据才算优质?——基于ACE视角的大语言模型智能体数据生成研究

什么样的智能体数据才算优质?——基于ACE视角的大语言模型智能体数据生成研究 论文来源:arXiv:2608.27260v1 摘要 大语言模型智能体越来越依赖生成式交互数据,以此学习与外部环境进行交互。和传统指令合成不同,智能体数据生成需要保证环境、任务、交互过程、成功信号四者之…

阅读更多 →
电子科技大学编译原理实验代码:词法分析到代码生成完整实现 2026/10/1 17:03:25

电子科技大学编译原理实验代码:词法分析到代码生成完整实现

简介:这份资源是电子科技大学编译原理课程的实验代码合集,面向正在学习编译原理、需要动手实现词法分析与语法分析的高校学生及自学者。内容围绕编译器前端核心模块展开,包含词法分析器与语法分析器的完整实现,涉及token识别、正则…

阅读更多 →
STBC空时分组码编码译码实现与MATLAB仿真:Alamouti方案与BER曲线分析 2026/10/1 17:03:24

STBC空时分组码编码译码实现与MATLAB仿真:Alamouti方案与BER曲线分析

简介:面向无线通信初学者,这份MATLAB代码实现了空时分组码(STBC)的编码与译码全流程,并配套误码率(BER)曲线绘制功能。通过实际运行即可直观对比不同信噪比下的误码性能,适合用于课程…

阅读更多 →
多Agent编排系统节点故障全解析:从租约机制到故障转移实战 2026/10/1 17:03:23

多Agent编排系统节点故障全解析:从租约机制到故障转移实战

1. 先搞清楚:一个节点"失败"到底败在哪一层1.1 我遇到的真实事故:一条链路卡死,排查半小时才找到凶手先说一个我凌晨两点处理的故障。当时线上跑着一套三个节点组成的 Agent 编排链路:节点A负责接收上游任务并拆解&…

阅读更多 →
思科Catalyst 9800无线控制器配置:Tag模型解析与开局避坑指南 2026/10/1 17:03:23

思科Catalyst 9800无线控制器配置:Tag模型解析与开局避坑指南

简介:这是一份针对思科Catalyst 9800系列无线控制器的实战配置手册,适合需要部署、调优和维护企业无线网络的工程师、运维人员,也可作为备考CCNP/CCIE无线方向的参考。内容先介绍Catalyst 9800-40的技术规格与性能指标,如最大支持…

阅读更多 →
AI资讯日更工作流:信源指纹+规则引擎+人工校验 2026/10/1 17:03:16

AI资讯日更工作流:信源指纹+规则引擎+人工校验

1. 项目概述:这不是一份“新闻简报”,而是一套可复用的AI资讯日更工作流“2026-09-22 AI最新资讯日报”这个标题乍看像一份时效性极强的媒体产品,但作为从业十年、亲手搭建过7套行业资讯系统、服务过23家科技企业内容团队的老手,我…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉