JAVA练习290- 相交链表
题目概览给你两个单链表的头节点headA和headB请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点返回null。图示两个链表在节点c1开始相交题目数据保证整个链式结构中不存在环。注意函数返回结果后链表必须保持其原始结构。自定义评测评测系统的输入如下你设计的程序不适用此输入intersectVal- 相交的起始节点的值。如果不存在相交节点这一值为0listA- 第一个链表listB- 第二个链表skipA- 在listA中从头节点开始跳到交叉节点的节点数skipB- 在listB中从头节点开始跳到交叉节点的节点数评测系统将根据这些输入创建链式数据结构并将两个头节点headA和headB传递给你的程序。如果程序能够正确返回相交节点那么你的解决方案将被视作正确答案。示例 1输入intersectVal 8, listA [4,1,8,4,5], listB [5,6,1,8,4,5], skipA 2, skipB 3输出Intersected at 8解释相交节点的值为 8 注意如果两个链表相交则不能为 0。 从各自的表头开始算起链表 A 为 [4,1,8,4,5]链表 B 为 [5,6,1,8,4,5]。 在 A 中相交节点前有 2 个节点在 B 中相交节点前有 3 个节点。 — 请注意相交节点的值不为 1因为在链表 A 和链表 B 之中值为 1 的节点 (A 中第二个节点和 B 中第三个节点) 是不同的节点。换句话说它们在内存中指向两个不同的位置而链表 A 和链表 B 中值为 8 的节点 (A 中第三个节点B 中第四个节点) 在内存中指向相同的位置。示例 2输入intersectVal 2, listA [1,9,1,2,4], listB [3,2,4], skipA 3, skipB 1输出Intersected at 2解释相交节点的值为 2 注意如果两个链表相交则不能为 0。 从各自的表头开始算起链表 A 为 [1,9,1,2,4]链表 B 为 [3,2,4]。 在 A 中相交节点前有 3 个节点在 B 中相交节点前有 1 个节点。示例 3输入intersectVal 0, listA [2,6,4], listB [1,5], skipA 3, skipB 2输出No intersection解释从各自的表头开始算起链表 A 为 [2,6,4]链表 B 为 [1,5]。 由于这两个链表不相交所以 intersectVal 必须为 0而 skipA 和 skipB 可以是任意值。 这两个链表不相交因此返回 null 。提示listA中节点数目为mlistB中节点数目为n1 m, n 3 * 10^41 Node.val 10^50 skipA m0 skipB n如果listA和listB没有交点intersectVal为0如果listA和listB有交点intersectVal listA[skipA] listB[skipB]进阶你能否设计一个时间复杂度O(m n)、仅用O(1)内存的解决方案来源160. 相交链表 - 力扣LeetCode解题分析方法一哈希集合定义一个哈希集合存储 ListA 的所有节点然后遍历 ListB 判断是否有节点在集合中即可。时间复杂度O(mn)空间复杂度O(m)/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val x; * next null; * } * } */ public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { SetListNode set new HashSet(); ListNode temp headA; while(temp ! null) { set.add(temp); temp temp.next; } temp headB; while(temp ! null) { if (set.contains(temp)) { return temp; } temp temp.next; } return null; } }方法二双指针如果两个链表是等长的那么两个链表遍历到相交节点的次数一定是一样的因此我们只需要两个链表一起遍历作比较即可。如果两个链表不是等长的按照上面的思路我们可以给短的那个链表前面补上空节点直到两个链表长度相等就可以一起遍历找到相交节点了。但是由于链表长度是未知的我们可以换个方式把 ListA 拼接到 ListB 前面ListB 拼接到 ListA 前面这样两个链表的长度就都是 mn 了。我们可以用双指针来代替拼接i 遍历 ListAj 遍历 ListB当 ListA 遍历完后 i 再遍历 ListBListB 遍历完后 j 再遍历 ListA。时间复杂度O(mn)空间复杂度O(1)/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val x; * next null; * } * } */ public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { ListNode a headA, b headB; while(true) { if (a b) { return a; } a a null ? headB : a.next; b b null ? headA : b.next; } } }

相关新闻

嵌入式面试高频考点精讲(一):内存管理与指针

嵌入式面试高频考点精讲(一):内存管理与指针

1. 堆栈区别与内存布局 刚入行嵌入式开发时,我最常被问到的就是"堆和栈有什么区别"。这个问题看似基础,但能准确回答的人并不多。记得第一次面试时,我支支吾吾半天只说出了"一个自动分配一个手动分配",结果被…

2026/7/16 8:09:36 阅读更多 →
圣装刺剑Prime强度解析:近战武器生态位与配卡实战指南

圣装刺剑Prime强度解析:近战武器生态位与配卡实战指南

最近在《星际战甲》社区里,有个现象很有意思:不少玩家在讨论圣装刺剑Prime(也叫技巧之剑Prime)时,总会提到一种"重生感"——明明武器数值不差,机制也有亮点,但用起来总感觉"周围…

2026/7/16 8:07:36 阅读更多 →
丙午年六月初三秉性思

丙午年六月初三秉性思

丙午年六月初三秉性思孤风不单行,双花难齐独?晨光一线处,飞霞重色路。翠烟蒸汽升,紫薇芬芳故。骋望空影相,俯思轨迹途。水天同城镜,情地异乡湖。鱼游江海涛,虾潜沙泥匍。诗歌爱恋潮,…

2026/7/16 8:05:35 阅读更多 →

最新新闻

TLPI 第24 章 练习:Process Creation

TLPI 第24 章 练习:Process Creation

笔记和练习博客总目录见:开始读TLPI。 24-1 在一个程序执行以下一系列 fork() 调用之后,会产生多少个新进程(假设所有调用都成功)? fork(); fork(); fork(); 总共会有8个进程,新进程有7个。 如下图&#…

2026/7/16 9:10:04 阅读更多 →
Mac mini本地智能体实战:OpenClaw+飞书机器人零云依赖工作流

Mac mini本地智能体实战:OpenClaw+飞书机器人零云依赖工作流

1. 这不是“又一个AI工具链”,而是Mac mini上真正能落地的智能体工作流 它来了——这句话在技术圈里从来不是营销话术,而是某种临界点被击穿后的集体直觉。过去三个月,我用一台 Mac mini M2(16GB内存) 搭建了一套从本…

2026/7/16 9:08:03 阅读更多 →
MetaBlriGer V2.7实战:为任意拓扑角色注入MetaHuman级面部动画

MetaBlriGer V2.7实战:为任意拓扑角色注入MetaHuman级面部动画

1. 项目概述:打通MetaHuman与自定义角色的桥梁最近在做一个高保真数字人项目,客户要求角色既能拥有MetaHuman级别的细腻表情,又要保留其独特的、非标准化的面部拓扑结构。这听起来像是个不可能的任务,对吧?毕竟&#x…

2026/7/16 9:06:03 阅读更多 →
AI生成内容在社交媒体泛滥:LinkedIn长文超40%为AI创作

AI生成内容在社交媒体泛滥:LinkedIn长文超40%为AI创作

两个月前,我在浏览 LinkedIn 时注意到一个现象:那些看起来结构完美、用词精准的长篇职业分享,读起来总有一种奇怪的“光滑感”——没有拼写错误,没有语法问题,但就是缺少了真实经验带来的粗糙感和具体细节。起初我以为…

2026/7/16 9:04:02 阅读更多 →
DHT11温湿度传感器实战指南:从时序解析到代码移植

DHT11温湿度传感器实战指南:从时序解析到代码移植

1. DHT11传感器基础认知 第一次接触DHT11是在五年前的一个智能家居项目上,当时需要低成本实现环境监测功能。这个火柴盒大小的传感器让我印象深刻——只需要三根线(VCC、GND、DATA)就能同时获取温湿度数据,成本还不到10块钱。不过…

2026/7/16 9:02:02 阅读更多 →
[镜像打包]Windows系统下将软件包制作成本地镜像源并实现内网分发

[镜像打包]Windows系统下将软件包制作成本地镜像源并实现内网分发

本文将详细拆解镜像站URL的结构原理,并指导如何在Windows系统下将特定软件包(如Qt)制作成本地镜像,供内网用户通过文件共享或Web服务器方式下载。一、镜像站URL结构解析 以 https://www.mirrorservice.org/sites/download.qt-proj…

2026/7/16 9:00:01 阅读更多 →

日新闻

HarmonyOs应用《重要日》开发第6篇 - 数据持久化存储

HarmonyOs应用《重要日》开发第6篇 - 数据持久化存储

本篇深入剖析 ImportantDays 项目的数据持久化方案——基于 HarmonyOS ArkData 模块的 Preferences 轻量级存储,以及 PreferenceUtil 工具类的单例封装。一、HarmonyOS 数据存储方案对比 HarmonyOS 提供了多种数据存储方案:方案适用场景特点Preferences轻…

2026/7/16 0:08:27 阅读更多 →
Python实现跨境电商商品图批量翻译教程

Python实现跨境电商商品图批量翻译教程

一、问题引入做跨境电商的卖家朋友,你是否遇到过这样的困扰?每次上架新品到亚马逊、Shopee或Lazada等平台,都需要处理大量商品图片的多语言版本。比如上架200款衣服,每款需要翻译成英语、日语、韩语等5种语言,这意味着…

2026/7/16 0:08:27 阅读更多 →
鸿蒙 7 新特性实战①:从 0 到 1 掌握 @kit 标准导入规范

鸿蒙 7 新特性实战①:从 0 到 1 掌握 @kit 标准导入规范

从鸿蒙 7(HarmonyOS NEXT)开始,官方全面完成了从 ohos.* 零散模块到 kit.* 领域套件的体系重构。对开发者来说,第一道门槛不是 API 用法变化,而是统一的导入规范——旧体系默认导入、解构导入混用的混乱局面被彻底终结…

2026/7/16 0:10:29 阅读更多 →

周新闻

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨 在一个阳光明媚的上午,互联网大厂的面试官坐在桌前,准备迎接他的面试候选人——燕双非,一个以搞笑和幽默著称的程序员。第一轮提问 面试官:燕双非,作…

2026/7/15 21:09:01 阅读更多 →
车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估在智能驾驶和车联网技术快速发展的今天,车载以太网作为新一代车载网络的核心传输技术,其物理层性能直接决定了数据传输的可靠性和稳定性。1000BASE-T1作为当前主流的…

2026/7/15 19:42:20 阅读更多 →
VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战指南嵌入式开发领域正经历一场工具链的静默革命。当传统Keil用户首次打开VSCode的扩展市场搜索EIDE时,往往会惊讶于这个看似简单的插件竟能重构十余年的开发习惯。本文将揭示如何用五个精准步骤&#xff0…

2026/7/15 17:52:08 阅读更多 →

月新闻