160.相交链表
检查链表是否为空:如果 初始化指针:创建两个指针 移动指针:同时移动两个指针,沿着链表遍历。如果其中一个指针到达链表末尾,则将其指向另一个链表的头部。这样,两个指针可以同时遍历两个链表。 检查交点:当两个指针相等时,即它们指向同一个节点,则返回该节点。如果在遍历过程中,两个指针没有相遇,则返回 检查链表是否为空:首先检查 初始化指针: 移动指针:使用 返回交点:当
发布日期:2025-06-19 06:02:23
浏览次数:4
分类:精选文章
本文共 1087 字,大约阅读时间需要 3 分钟。
为了解决给定两个单链表相交节点的问题,我们可以使用双指针法。以下是详细的解决方案:
问题分析
给定两个单链表的头节点 headA 和 headB,我们需要找到它们的交点。如果两个链表没有交点,则返回 null。交点是指两个链表在某个节点处开始相连,即两个节点的值相等且指向同一个节点。
解决方案
我们可以使用双指针法来解决这个问题。以下是详细步骤:
headA 或 headB 为空,直接返回 null,因为两个链表不可能相交。la 和 lb 分别指向 headA 和 headB。null。代码实现
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) { if (headA == NULL || headB == NULL) return NULL; struct ListNode *la = headA, *lb = headB; while (la != lb) { if (la != NULL) la = la->next; if (lb != NULL) lb = lb->next; if (la == NULL) { la = headB; } else if (lb == NULL) { lb = headA; } } return la;} 代码解释
headA 和 headB 是否为空。如果有任何一个为空,直接返回 null。la 和 lb 分别指向 headA 和 headB。while 循环,移动 la 和 lb。如果 la 到达末尾,则将 la 指向 headB,同理,如果 lb 到达末尾,则将 lb 指向 headA。la 和 lb 相等时,返回 la。如果循环结束后没有找到交点,返回 null。这种方法确保了两个指针能够同时遍历两个链表,直到找到交点或确定没有交点,从而高效地解决问题。
发表评论
最新留言
表示我来过!
[***.240.166.169]2026年06月06日 09时06分33秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
php生成html文件的多种方法介绍
2023-03-01
php生成二维码到图片上
2023-03-01
php生成二维码并下载图片(适应于框架)
2023-03-01
PHP生成及获取JSON文件的方法
2023-03-01
PHP生成唯一不重复的编号
2023-03-01
PHP生成器-动态生成内容的数组
2023-03-01
PHP的ip2long和long2ip升级函数
2023-03-01
php的web路径获取
2023-03-01
php的一些小笔记--字符串
2023-03-01
php的几种运行模式CLI、CGI、FastCGI、mod_php
2023-03-01
php的四大特性八大优势
2023-03-01
RabbitMQ
2023-03-01
PHP的威胁函数与PHP代码审计实战
2023-03-01
PHP的引用举例
2023-03-01
PHP相关代码
2023-03-01
RabbitMQ
2023-03-01
php知识点记录
2023-03-01