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

链表题解——相交链表(力扣160 easy)

 160. 相交链表

算法思路

  1. 核心思想

    • 使用两个指针 pA 和 pB,分别从 headA 和 headB 开始遍历。
    • 当 pA 遍历到链表 A 的末尾时,跳转到链表 B 的头节点;当 pB 遍历到链表 B 的末尾时,跳转到链表 A 的头节点。
    • 如果两个链表相交,pA 和 pB 最终会在相交节点相遇;如果不相交,pA 和 pB 会同时到达 None
  2. 具体步骤

    • 初始化 pA = headApB = headB
    • 当 pA != pB 时:
      • 如果 pA 为空,跳转到 headB;否则继续遍历 pA.next
      • 如果 pB 为空,跳转到 headA;否则继续遍历 pB.next
    • 返回 pA(即相交节点)。
  3. 关键点

    • 通过跳转指针的方式,确保两个指针遍历的总长度相同。
    • 时间复杂度为 O(m + n),空间复杂度为 O(1)
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = Noneclass Solution:def getIntersectionNode(self, headA, headB):if not headA or not headB:return NonepA, pB = headA, headBwhile pA != pB:pA = headB if not pA else pA.nextpB = headA if not pB else pB.nextreturn pA

题解里看到的图解,很清晰

相关文章:

  • <b> 与 <span> 等行内元素添加 margin-top 或 margin-bottom 不生效问题
  • 高精度微型导轨在3D打印机中有多重要?
  • 多相电机驱动控制学习(1)——基于双dq坐标系的六相/双三相PMSM驱动控制
  • 泰迪杯特等奖案例深度解析:基于多模态时空图神经网络的工业园区碳排放实时监测与优化系统
  • Python训练营打卡Day38
  • Common JS和ES Module的区别
  • 《OpenFeign 最佳实践:三大优雅调用远程服务的方式》​
  • mysql explain使用
  • 基于springboot的校园商铺管理系统的设计与实现
  • HikariCP连接池使用和源码分析
  • NB-IoT NPUSCH(三)-资源映射
  • 一种C# 的SM4 的 加解密的实现,一般用于医疗或者支付
  • 多线程(1)
  • ODSA架构与操作-1
  • 2025最新Gemini 2.5 Pro API限制全面解析:最完整的使用指南与优化方案
  • 做好测试用例设计工作的关键是什么?
  • 仓颉入门:特性
  • 嵌入式自学第二十九天(5.27)
  • DFS入门刷题c++
  • AI 智能体的那些事—架构设计关键点
  • 网站域名备案号查询/房地产销售技巧和话术
  • seo网站排名优化服务/品牌企业seo咨询
  • 手机代理服务器免费版/品牌关键词排名优化怎么做
  • 用thinkphp做音乐网站/电商网站建设价格
  • 站酷网怎么接单赚钱/成都网站制作费用
  • 免费b2b网站大全免费黄页/定制网站建设推广服务