Leetcode 160 相交链表 (每日一题 20210802)
给你两个单链表的头节点 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 。链接:https://leetcode-cn.com/problems/intersection-of-two-linked-listsclass Solution:def getInersectionNode(self, headA:ListNode, headB:ListNode):# 方法一A, B = headA, headBwhile A!=B:if A:A = A.nextelse:A = headBif B:B = B.nextelse:B = headAreturn A# 方法二i, j = 0, 0p, q = headA, headBwhile p:p = p.nexti += 1while q:q = q.nextj += 1for _ in range(i-j):p = p.nextfor _ in range(j-i):q = q.nextwhile p and q and p!=q:p = p.nextq = q.nextreturn p# 方法三stacka, stackb = [], []p, q = headA, headBwhile p:stacka.append(p)p = p.nextwhile q:stackq.append(q)q = q.nexti, j = len(stacka) - 1, len(stackb) - 1ans = Nonewhile i>=0 and j>=0 and stacka[i]!=stackb[j]:ans = stacka[i]i = i - 1j = j - 1return ans
Leetcode 160 相交链表 (每日一题 20210802)相关推荐
- LeetCode 160. 相交链表
文章目录 1. 题目信息 2. 解题 2.1 计算长度 2.2 交替遍历 1. 题目信息 编写一个程序,找到两个单链表相交的起始节点. <剑指Offer>同题:面试题52. 两个链表的第一 ...
- Leetcode 160.相交链表
难度:简单 频率:140 题目 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表不存在相交节点,返回 null . 解题方法:双指针遍历 解题 ...
- Leetcode 160. 相交链表 解题思路及C++实现
解题思路: 先将两个链表构建成一个环,定义两个快慢指针,当它们相遇时,将fast指针从头结点往后遍历,每次走一步,当这两个指针再次相遇时,该节点就是相交节点. /*** Definition for ...
- [leetcode]160.相交链表
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返回 null . 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结 ...
- [leetcode] 160.相交链表
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返回 null . 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结 ...
- leetcode 160. 相交链表(双指针)
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返回 null . 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结 ...
- LeetCode 160. 相交链表(c++实现)
思路 统计两个链表的长度,并记录两个链表尾结点,判断是否相同. 比较链表长度,让较长的链表走|lenA-lenB|步数,使得两个俩表剩余部分长度相等 两个链表一起走,走到相同节点,即相交节点. 实现 ...
- Leetcode 61 旋转链表 (每日一题 20210723)
给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置.示例 1:输入:head = [1,2,3,4,5], k = 2 输出:[4,5,1,2,3] 示例 2:输入:hea ...
- Leetcode 141.环形链表 (每日一题 20210617)
给定一个链表,判断链表中是否有环.如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 ...
最新文章
- 巴黎新式婴儿饼干,你敢吃吗?
- Centos 安装 Wireshark
- PLSQL的截取函数
- http如何像tcp一样实时的收消息?
- CMake基础 第2节 分离编译
- linux测试磁盘io脚本,脚本分享:Linux下磁盘io测试
- springboot中注入FilterRegistrationBean不生效原因
- 备案域名绑定服务器后 提示需要备案_关于天行数据ICP备案信息变更的重要通知...
- 初中数学最全几何模型_老师熬夜整理:初中数学最全几何模型大汇总,学生大呼“过瘾”...
- web.xml 模板和Servlet版本
- 关于QTP 9.2 .NET 插件破解的尝试
- oracle获取行的值给产量,递归oracle sql识别值
- Mac/Homebrew查找nginx安装目录和nginx.conf配置文件目录
- JDK API文档中文版(1.6、1.8、1.9)(附百度网盘下载地址)
- tensorflow无法检测到GPU设备--英伟达控制面板显示未连接英伟达GPU的显示器
- unity3d显示c4d材质_C4D入门到精通,没那么难
- web自动化断言_无需断言即可进行Web开发的自动化测试
- 微软发布安卓手机的Office预览版,需申请内测
- 【逻辑】四人过桥问题
- 索尼toio创意机器人套件国行版正式发布,定价1999元