当前位置: 首页 > news >正文

力扣:160. 相交链表(Python3)

题目:

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

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

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

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

自定义评测:

评测系统 的输入如下(你设计的程序 不适用 此输入):

  • intersectVal - 相交的起始节点的值。如果不存在相交节点,这一值为 0
  • listA - 第一个链表
  • listB - 第二个链表
  • skipA - 在 listA 中(从头节点开始)跳到交叉节点的节点数
  • skipB - 在 listB 中(从头节点开始)跳到交叉节点的节点数

评测系统将根据这些输入创建链式数据结构,并将两个头节点 headA 和 headB 传递给你的程序。如果程序能够正确返回相交节点,那么你的解决方案将被 视作正确答案 。

来源:力扣(LeetCode)
链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

示例:

示例 1:

输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,6,1,8,4,5], skipA = 2, skipB = 3
输出:Intersected at '8'
解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。 从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,6,1,8,4,5]。 在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。 — 请注意相交节点的值不为 1,因为在链表 A 和链表 B 之中值为 1 的节点 (A 中第二个节点和 B 中第三个节点) 是不同的节点。换句话说,它们在内存中指向两个不同的位置,而链表 A 和链表 B 中值为 8 的节点 (A 中第三个节点,B 中第四个节点) 在内存中指向相同的位置。


示例 2:

输入:intersectVal = 2, listA = [1,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1
输出:Intersected at '2'

解释:相交节点的值为 2 (注意,如果两个链表相交则不能为 0)。 从各自的表头开始算起,链表 A 为 [1,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 。

解法:

遍历headA,存储每个结点,遍历headB时判断每个结点headA是否遍历过。

知识点:

1.空集合的创建:只能使用set()创建,{}表示创建空字典。

代码:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = Noneclass Solution:def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> Optional[ListNode]:setA = set()while headA:setA.add(headA)headA = headA.nextwhile headB:if headB in setA:return headBheadB = headB.nextreturn None

http://www.lryc.cn/news/226047.html

相关文章:

  • 【华为OD机试AB高分必刷题目】无名的搜索题(Java-优先搜索(DFS)实现)
  • ant 任务(task)通过内嵌的arg元素传递命令行参数
  • STM32G0+EMW3080+阿里云飞燕平台实现单片机WiFi智能联网功能(三)STM32G0控制EMW3080实现IoT功能
  • IntelliJ IDEA - Git Commit 后 Commit 窗口不消失解决方案
  • Vue 组件化编程 和 生命周期
  • 《数字图像处理-OpenCV/Python》连载(41)图像的旋转
  • 案例 - 拖拽上传文件,生成缩略图
  • PHP 使用递归方式 将其二维数组整合为层级树 其中层级id 为一个uuid的格式 造成的诡异问题 已解决
  • rv1126-rv1109-添加分区,定制固件,开机挂载功能
  • 一台电脑使用多个gitee账号,以及提交忽略部分文件
  • 解析邮件文本内容; Mime文本解析; MimeStreamParser; multipart解析
  • 获取请求IP以及IP解析成省份
  • YOLOv8-seg改进:复现HIC-YOLOv5,HIC-YOLOv8-seg助力小目标分割
  • vscode 终端进程启动失败: shell 可执行文件“C:\Windows\System32\WindowsPower
  • 【中间件篇-Redis缓存数据库02】Redis高级特性和应用(慢查询、Pipeline、事务、Lua)
  • 栈 和 队列
  • 【推荐】一款AI写作大师、问答、绘画工具-「智元兔 AI」
  • 阿里云付费用户破100万 用户规模亚洲最大
  • 人工智能基础——Python:Matplotlib与绘图设计
  • Ubuntu 配置 Github 的 SSH keys
  • Flink—— Flink Data transformation(转换)
  • 前端读取文件当文件选择相同文件名的文件,内容不会变化
  • PHP 服装销售管理系统mysql数据库web结构layUI布局apache计算机软件工程网页wamp
  • 用于图像处理的高斯滤波器 (LoG) 拉普拉斯
  • 【h5 uniapp】 滚动 滚动条,数据跟着变化
  • ModStartBlog v8.5.0 评论开关布局调整,系统后台全面优化
  • django|报错SQLite 3.8.3 or later is required的解决方案
  • 通达OA get_datas.php前台sql注入-可获取数据库session登入后台漏洞复现 [附POC]
  • 苹果官方:所有国行iPhone 15系列都在中国生产!
  • Oracle 安装及 Spring 使用 Oracle