给你两个单链表的头节点 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)相关推荐

  1. LeetCode 160. 相交链表

    文章目录 1. 题目信息 2. 解题 2.1 计算长度 2.2 交替遍历 1. 题目信息 编写一个程序,找到两个单链表相交的起始节点. <剑指Offer>同题:面试题52. 两个链表的第一 ...

  2. Leetcode 160.相交链表

    难度:简单 频率:140 题目 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表不存在相交节点,返回 null . 解题方法:双指针遍历 解题 ...

  3. Leetcode 160. 相交链表 解题思路及C++实现

    解题思路: 先将两个链表构建成一个环,定义两个快慢指针,当它们相遇时,将fast指针从头结点往后遍历,每次走一步,当这两个指针再次相遇时,该节点就是相交节点. /*** Definition for ...

  4. [leetcode]160.相交链表

    给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返回 null . 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结 ...

  5. [leetcode] 160.相交链表

    给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返回 null . 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结 ...

  6. leetcode 160. 相交链表(双指针)

    给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返回 null . 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结 ...

  7. LeetCode 160. 相交链表(c++实现)

    思路 统计两个链表的长度,并记录两个链表尾结点,判断是否相同. 比较链表长度,让较长的链表走|lenA-lenB|步数,使得两个俩表剩余部分长度相等 两个链表一起走,走到相同节点,即相交节点. 实现 ...

  8. Leetcode 61 旋转链表 (每日一题 20210723)

    给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置.示例 1:输入:head = [1,2,3,4,5], k = 2 输出:[4,5,1,2,3] 示例 2:输入:hea ...

  9. Leetcode 141.环形链表 (每日一题 20210617)

    给定一个链表,判断链表中是否有环.如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 ...

最新文章

  1. 巴黎新式婴儿饼干,你敢吃吗?
  2. Centos 安装 Wireshark
  3. PLSQL的截取函数
  4. http如何像tcp一样实时的收消息?
  5. CMake基础 第2节 分离编译
  6. linux测试磁盘io脚本,脚本分享:Linux下磁盘io测试
  7. springboot中注入FilterRegistrationBean不生效原因
  8. 备案域名绑定服务器后 提示需要备案_关于天行数据ICP备案信息变更的重要通知...
  9. 初中数学最全几何模型_老师熬夜整理:初中数学最全几何模型大汇总,学生大呼“过瘾”...
  10. web.xml 模板和Servlet版本
  11. 关于QTP 9.2 .NET 插件破解的尝试
  12. oracle获取行的值给产量,递归oracle sql识别值
  13. Mac/Homebrew查找nginx安装目录和nginx.conf配置文件目录
  14. JDK API文档中文版(1.6、1.8、1.9)(附百度网盘下载地址)
  15. tensorflow无法检测到GPU设备--英伟达控制面板显示未连接英伟达GPU的显示器
  16. unity3d显示c4d材质_C4D入门到精通,没那么难
  17. web自动化断言_无需断言即可进行Web开发的自动化测试
  18. 微软发布安卓手机的Office预览版,需申请内测
  19. 【逻辑】四人过桥问题
  20. 索尼toio创意机器人套件国行版正式发布,定价1999元

热门文章

  1. maven开发工具安装
  2. 梓益C语言学习笔记之链表&动态内存&文件
  3. 老男孩Linux运维第41期20171016第六周学习重点课堂记录
  4. 在阿里云主机上基于CentOS用vsftpd搭建FTP服务器
  5. Edit Distance编辑距离(NM tag)- sam/bam格式解读进阶
  6. UIButton拖动响应事件,距离问题
  7. lua 使用 spine 的一些问题
  8. linux history 历史命令行查询和使用
  9. Update item to this version和Revert to this version区别
  10. 剑指offer:分行从上往下打印二叉树