相交链表—leetcode160
编写一个程序,找到两个单链表相交的起始节点。
如下面的两个链表:
在节点 c1 开始相交。
示例 1:
输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3
输出:Reference of the node with value = 8
输入解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。
示例 2:
输入:intersectVal = 2, listA = [0,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1
输出:Reference of the node with value = 2
输入解释:相交节点的值为 2 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [0,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
输出:null
输入解释:从各自的表头开始算起,链表 A 为 [2,6,4],链表 B 为 [1,5]。由于这两个链表不相交,所以 intersectVal 必须为 0,而 skipA 和 skipB 可以是任意值。
解释:这两个链表不相交,因此返回 null。
注意:
如果两个链表没有交点,返回 null.
在返回结果后,两个链表仍须保持原有的结构。
可假定整个链表结构中没有循环。
程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。
思路:若长的链表长度为m,短的链表长度为n,m>n,那么先让长的链表走m-n步,然后再和短的链表一起走,直到相遇或者一起走到结尾,然后返回。下面这段代码比较取巧,不用考虑谁长谁短的问题,交换着来就行,不过核心思想都是我上面说的了。
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {if(headA==NULL || headB==NULL)return NULL;ListNode* she = headA;ListNode* he = headB;while(she!=he){she = she==NULL?headB:she->next;he = he==NULL?headA:he->next;}return she;}
};
相交链表—leetcode160相关推荐
- Leetcode160. 相交链表
Leetcode160. 相交链表 题目: 编写一个程序,找到两个单链表相交的起始节点. 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = ...
- 47 - 算法 - Leetcode-160 -相交链表
// 链表对齐 - 160 相交链表class Solution {public:ListNode *getIntersectionNode(ListNode *headA, ListNode *he ...
- 【每日一算法】相交链表
微信改版,加星标不迷路! 每日一算法 - 相交链表 编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 示例 1: 输入:intersectVal = 8, l ...
- 《LeetCode力扣练习》第160题 相交链表 Java
<LeetCode力扣练习>第160题 相交链表 Java 一.资源 题目: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表不存 ...
- leetcode 160 简单难度 相交链表
160. 相交链表 编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 输入:intersectVal = 8, listA = [4,1,8,4,5], li ...
- 文巾解题 160. 相交链表
1 题目描述 2 解题思路 2.1 哈希表 遍历listA,把每个节点(以及后继节点)放入一个list中.遍历完A之后遍历B,如果B的某个节点(以及后继节点)在这个list中,那么我们就找到了相交的部 ...
- LeetCode-链表-160. 相交链表
160. 相交链表 思路一:使用set用到了额外的内存,没有达到题目要求 /*** Definition for singly-linked list.* struct ListNode {* int ...
- python 相交链表
|相交链表 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表不存在相交节点,返回 null . 图示两个链表在节点 c1 开始相交: 题目数据 ...
- LeetCode Algorithm 160. 相交链表
160. 相交链表 Ideas 这题之前左神算法课的时候也讲过,那是一个带环的相交链表,不过原理都是一样的. 双指针,a指针先沿着headA开始走,走到头之后开始沿着headB继续走,b指针先沿着he ...
最新文章
- 11个优秀的Android开发开源项目
- Design Pattern - Abstract Factory(C#)
- java poi 如何合并多个sheet 为一个sheet_Java POI组件实现多个Excel文件整合成一个多Sheet的Excel文件...
- hdu 1568 Fibonacci 对数。。
- 【渝粤教育】广东开放大学 土木工程材料 形成性考核 (22)
- 浅谈shell中的clear命令实现
- 工作篇-佛山三水恒大-2020.10.23
- 真格量化-隐含波动率购买
- 我们出了套西游记考题,可以保证吴承恩不及格
- SecureCRT 免安装、绿色版、免费版本
- 基于springboot的社区物业管理系统(完美运行,包含数据库源代码,可完美运行)
- pdf如何去除保护限制,pdf复制打印限制怎么解除?
- CISSP知识点汇总(已完结并通过考试)
- 【干货分享】硬件测试工程师必备基本技能,看这一篇就够!
- 高可靠环境 FileNet 系统介绍和应用实例
- 快手爬虫 解决粉丝数 关注数等字体加密 python快手爬虫
- 122全国交通安全日
- unraid虚拟linux系统,UNRAID教程:3分钟 用unraid自带的虚拟机 安装 黑群晖NAS DSM系统 很强大!...
- 一寸等于多少厘米,一寸照片尺寸是多少?
- 光遇服务器修复时间,光遇:测试服调整,瞬间Bug被修复?几家欢喜几家愁