news 2026/8/7 19:19:52

[160] Intersection of Two Linked Lists 链表相交

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[160] Intersection of Two Linked Lists 链表相交

[160] Intersection of Two Linked Lists

力扣题目链接

1. 长度对齐法
1.1 思想

相交链表的两个性质:

  1. 共享尾部

    如果两个单向链表相交,那么从第一个相交节点开始,到链表末尾的所有节点,都是两条链表完全共享的。它们不可能在此之后再分开。

  2. 交点即指针相等

    真正的相交,必须是物理上(内存地址上)的汇合,而不是节点值恰好相等。

    所谓的“交点”,不是指两个节点的 val 值相等,而是指两个链表的指针指向了内存中同一个节点对象

    因此,在代码中,我们寻找交点的方法是直接比较指针是否相等:if (pointerA == pointerB)。

利用这个性质,我们可以让两个指针分别从两条链表的某个位置出发,保证它们到链表末-尾的距离相等,然后同步前进,找到它们第一次相遇(指针相等)的地方。

1.2 AC代码
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { // --- 1. 计算两个链表的长度 --- ListNode *curA = headA; ListNode *curB = headB; int lenA = 0, lenB = 0; // 遍历链表A,获取其长度 while (curA != nullptr) { lenA++; curA = curA->next; } // 遍历链表B,获取其长度 while (curB != nullptr) { lenB++; curB = curB->next; } // --- 2. 对齐两个链表的起点 --- // 将指针重新移回头节点,准备进行对齐操作 curA = headA; curB = headB; // 通过 swap 保证 curA 指向较长的链表,curB 指向较短的链表 // 这样做可以简化后续代码,无需写 if-else 分支 if (lenB > lenA) { swap(lenA, lenB); swap(curA, curB); } // 计算长度差 int gap = lenA - lenB; // 让较长的链表的指针 curA 先向前移动 gap 步 // 移动后,curA 和 curB 到达链表末尾的距离就相等了 while (gap--) { curA = curA->next; } // --- 3. 同步前进,寻找第一个相交节点 --- while (curA != nullptr) { // 核心判断:比较两个指针是否指向同一个内存地址 // 如果指针相等,说明找到了第一个公共节点 if (curA == curB) { return curA; } curA = curA->next; curB = curB->next; } // 如果循环结束都没有相遇,说明两个链表不相交 return nullptr; }
1.3 时空复杂度

时间复杂度:O(La + Lb)

空间复杂度:O(1)

2.双指针法

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/7 4:59:20

开展性能测试步骤

1、确定测试目标和需求: 确定要测试的系统、组件或功能。 确定测试的目标,例如响应时间、吞吐量、并发用户数等性能指标。 定义测试的需求,包括测试时间、资源预算等。 2、确定测试范围和环境: 确定测试范围,包括…

作者头像 李华
网站建设 2026/8/4 17:24:24

Coze工作流实战:从踩坑到精通

对于最近所做的拾漫项目有以下一些收获前言Coze工作流在之前的课中学过,当时用起来比较顺手就没那么在意,觉得是一个很简单的东西。但在这个项目中,我遇到了许多Coze工作流的问题,例如项目不通,输出为空,出…

作者头像 李华
网站建设 2026/8/7 2:24:22

JSON性能革命:RapidJSON如何用SIMD技术改写C++数据处理格局

当你的API服务器在每秒数十万次请求下挣扎,当实时数据处理因为JSON解析而成为系统瓶颈,你是否曾怀疑过:这些看似简单的数据格式处理,真的需要消耗如此巨大的计算资源吗?今天,让我们一同揭开RapidJSON这个性…

作者头像 李华
网站建设 2026/8/7 19:25:16

Qwen3-30B-A3B-Instruct-2507:小参数激活大智慧的AI新范式

在人工智能模型日益庞大的今天,如何在有限的计算资源下实现高性能推理已成为技术界关注的焦点。传统大模型动辄需要数百亿参数的完全激活,这不仅对硬件提出严苛要求,更在实际部署中形成了技术壁垒。Qwen3-30B-A3B-Instruct-2507的出现&#x…

作者头像 李华
网站建设 2026/8/7 8:00:10

打造极速构建体验:BuildKit配置文件深度调优实战

打造极速构建体验:BuildKit配置文件深度调优实战 【免费下载链接】buildkit concurrent, cache-efficient, and Dockerfile-agnostic builder toolkit 项目地址: https://gitcode.com/GitHub_Trending/bu/buildkit 还在为构建速度缓慢而烦恼吗?作…

作者头像 李华