描述

02.07. 链表相交

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。

图示两个链表在节点 c1 开始相交:

题目数据 保证 整个链式结构中不存在环。

注意,函数返回结果后,链表必须 保持其原始结构 。

示例 1:

输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3
输出:Intersected at ‘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
输出:Intersected at ‘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 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路一:

如下自己写的,效率比较低,用map来存已经找到的节点,置为1.之后找到已经置1的节点直接跳出循环。

/*** 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) {map<ListNode*,int> mymap;  //定义一个map来存已经找过的节点ListNode * res = nullptr;  //定义一个返回结果初始化为空while(headA!=nullptr||headB!=nullptr){// if(headA!=nullptr&&mymap[headA]==0){   //当第一个链表不为空,且map中没有存到这个节点//     mymap[headA]=1;    //这个节点的地址置1//     headA = headA->next;    //移动指针// }else {//     break;          //找到相交的直接跳出// }// if(headB!=nullptr&&mymap[headB]==0){   //当第一个链表不为空,且map中没有存到这个节点//     mymap[headB]=1;    //这个节点的地址置1//     headB = headB->next;    //移动指针// }else {//     break;          //找到相交的直接跳出// }if(headA!=nullptr&&mymap[headA]==0){   //当第一个链表不为空,且map中没有存到这个节点mymap[headA]=1;                    //这个节点的地址置1headA = headA->next;              //移动指针}if(headB!=nullptr&&mymap[headB]==0){   //当第一个链表不为空,且map中没有存到这个节点mymap[headB]=1;                    //这个节点的地址置1headB = headB->next;               //移动指针}//在哪个节点找到定义为头节点if(mymap[headA]==1){    res = headA;break;}else if(mymap[headB]==1){res = headB;break;}}return res;    }
};

LeetCode-链表-面试题 02.07. 链表相交相关推荐

  1. [LeetCode] 面试题 02.07. 链表相交

    LeetCode 面试题 02.07.链表相交 思路 题目的本意其实就是求两个链表相交处结点的指针,并返回该结点指针 步骤: Step1.分别用两个指针curA.curB指向两个链表A.B的头结点 S ...

  2. 面试题02.07.链表相交

    面试题02.07链表相交 public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode hea ...

  3. leetcode面试题 02.07. 链表相交

    一:题目 二:思路 1.这道题我们是需要找到一个结点,并且从这个结点往后的结点都相等 2.我们需要将两个链表 右对齐 3.然后将长链表的指针移动到和短链表头结点相同的位置 4.接下来就是比较指针,当一 ...

  4. 面试题 02.07. 链表相交

    给定两个(单向)链表,判定它们是否相交并返回交点.请注意相交的定义基于节点的引用,而不是基于节点的值.换句话说,如果一个链表的第k个节点与另一个链表的第j个节点是同一节点(引用完全相同),则这两个链表 ...

  5. 力扣(707.面试题02.07)补9.16

    707.设计链表 可以,真的是一个工程类的题目,处处要考虑细节,其实20分钟基本能写好,但是改各种细节又要40分钟,就是各种bug,总共花了一个小时才正确. class MyLinkedList { ...

  6. 面试题 02.05. 链表求和

    面试题 02.05. 链表求和 给定两个用链表表示的整数,每个节点包含一个数位. 这些数位是反向存放的,也就是个位排在链表首部. 编写函数对这两个整数求和,并用链表形式返回结果. 示例: 输入:(7 ...

  7. LeetCode Algorithm 面试题 02.06. 回文链表

    面试题 02.06. 回文链表 Ideas 这题当时左神也讲过,用的是快慢指针,不过感觉好麻烦,不如直接遍历链表,把元素值存到数组,然后判断是不是回文数组就OK了. Code C++ class So ...

  8. 代码随想录(day04)-LeetCode:24、19、面试题02.07、142

    代码随想录:dayo4 1. [24]两两交换链表中的节点 虚拟头结点实现 递归实现 2.[19]**删除链表的倒数第N个节点** 双指针算法 3. 面试题[02.07]:链表相交 4.[142]环形 ...

  9. [LeetCode][C++]面试题 17.07. 婴儿名字/并查集

    面试题 17.07. 婴儿名字 每年,政府都会公布一万个最常见的婴儿名字和它们出现的频率,也就是同名婴儿的数量.有些名字有多种拼法,例如,John 和 Jon 本质上是相同的名字,但被当成了两个名字公 ...

最新文章

  1. nutch如何发布插件
  2. 比起商汤IPO,我们更关心那1亿美金和C轮融资的背后大料
  3. 设CPU中各部件及其相互连接关系如下图所示。图中W是写控制标志,R是读控制标志,R 1 和R 2 是暂存器
  4. 2009年北京突然的一场雪
  5. 远程连接SQL Server2008的设置方式
  6. NoSuchMethodError 常见原因及解决方法
  7. echart itemStyle属性设置
  8. WPF之DataTemplate(转)
  9. mojing SDK根据坐标进行移动
  10. boost安装详细教程
  11. uni-app开发开发h5,小程序,app,注意事项
  12. 云服务器远程桌面复制
  13. GBase 8s 编写使用UDR(C/Java)
  14. from_tensor_slices
  15. excel 公式 java_Java程序如何调用Excel中的各种公式
  16. NOI / 1.7编程基础之字符串题目排名状态提问15:整理药名
  17. json c语言开发,JSON c语言开发指南
  18. 【拓展】编程语言中的“前浪”和“后浪”
  19. 计算机桌面为什么没有语言栏了,电脑语言栏不见了的解决方法
  20. 打印系统开发(39)——检查打印机状态

热门文章

  1. Matlab最短路学习
  2. 台湾国立大学郭彦甫Matlab教程笔记(2)
  3. SNMP功能开发简介 二 net-snmp源码分析报文处理流程图
  4. origin使用指导。pdf_LabPlot替代Origin用于科研绘图
  5. hive 时间转字符串_07697.0.3如何在Kerberos环境下用Ranger完成对Hive的行过滤及列脱敏...
  6. cpu序列号能告诉别人嘛_微信这个开关不删除,别人手机能随意登录你的微信,学会告诉家人...
  7. 文本编辑器中实现设置工具栏和状态栏可见性的功能
  8. 微信 商城 php,PHP微信商城
  9. java exception e抛异常_抛出的异常在上层catch到,但是e.getMessage()为NULL,为什么会这样?...
  10. mysql 目录武沛齐_MySQL数据表中的数据操作