【LeetCode160】相交链表
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。
图示两个链表在节点 c1 开始相交:
题目数据 保证 整个链式结构中不存在环。
注意,函数返回结果后,链表必须 保持其原始结构 。
自定义评测:
评测系统 的输入如下(你设计的程序 不适用 此输入):
intersectVal - 相交的起始节点的值。如果不存在相交节点,这一值为 0
listA - 第一个链表
listB - 第二个链表
skipA - 在 listA 中(从头节点开始)跳到交叉节点的节点数
skipB - 在 listB 中(从头节点开始)跳到交叉节点的节点数
评测系统将根据这些输入创建链式数据结构,并将两个头节点 headA 和 headB 传递给你的程序。如果程序能够正确返回相交节点,那么你的解决方案将被 视作正确答案 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题报告:
对于这种链表题,就给定了两个指针,那指针移动到头了,就想办法再指向别的继续移动呗。
可以用极端考虑法,假设两个链表相交在最后一个节点,比如1->2->3->4->5和30->20->5。
链表1走了5步到头,链表2走3步到头,所以我们让指针1再走一遍链表2,指针2再走一遍链表1即可。即3+5=5+3,就相当于两个指针都走了一个圈就是了。为了判断不像交的情况,可以在表尾加一个NULL节点作为适配。依旧是两个指针都走了一个圈,是可以统一起来的。然后发现不极端的情况,也是可以统一起来的。所以解法就是这样了。
/*** 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) {ListNode *pa=headA, *pb=headB;while(pa != pb) {if(pa == NULL) pa = headB;else pa = pa->next;if(pb == NULL) pb = headA;else pb = pb->next;}return pa;}
};
【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 ...
- [Swift]LeetCode160. 相交链表 | Intersection of Two Linked Lists
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- leetcode160 相交链表
编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB ...
- LeetCode160.相交链表
题目来源:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/description/ 题目描述: 解法一: 先统计两根 ...
- 【每日一算法】相交链表
微信改版,加星标不迷路! 每日一算法 - 相交链表 编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 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 ...
最新文章
- 机器学习中的一些概念
- 使用Gearman做分布式计算
- 复数的物理意义是什么
- NAPI技术--原理和实现(一)
- php spry文本域_用Spry框架来简化AJAX
- 干涉测量技术的应用_技术分享 | 石化行业测量仪表应用在线答疑
- wake on lan
- 电脑端音乐播放器html5,分享|5 个很酷的音乐播放器
- react实现聊天界面_React-Redux 100行代码简易版探究原理
- win10有源信号分辨率怎么调_示波器高灵敏度小信号测量的注意事项
- WBE前端笔记1:HTML中一些不熟悉的标签
- 可以赚钱的副业项目,简单易上手兼职副业推荐
- CodeQL笔记之基本语法(一)
- dom4j的一些总结
- 火狐不能html转execl,使用Blob无法在FireFox中使用Excel导出JavaScript
- [UNR #3]百鸽笼
- matlab自定义函数的使用方法,Matlab自定义函数的几种方法
- Kotlin Flow 冷流 StateFlow 热流 StateFlow 的应用
- android动画简介
- 冲顶数据产品经理笔试题及解答
热门文章
- 使用SqlCommandBuilder
- 140. Word Break II
- [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第19篇]Shamir密钥交换场景
- c语言获取dll文件路径,C语言URLDownloadToFile获取文件下载进度
- linux下tar包安装sudo命令,ubuntu12.04LTS安装gv-412-Linux-x86.tar.gz方法
- 命令创建mysql数据库_怎么在命令行创建一个mysql数据库
- 小甲鱼c语言课后作业_知识,就是力量——山财“学习小课堂”助你蓄力
- Threejs性能监视和可视化控制
- 一建机电实务教材电子版_20年一建其实并不难,官方出版:复习题集(精修),速做速提90分...
- uploadify java 上传_jquery使用uploadify插件实现多文件的上传(java版)