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

两个有序链表序列的交集

两个有序链表序列的交集

一、问题描述

给定两个有序链表,要求找出这两个链表的交集元素,并以有序链表的形式返回。

二、思路
  1. 双指针法:使用两个指针分别指向两个链表的当前节点。
  2. 比较元素
    • 如果两个指针指向的元素相等,则将该元素加入结果链表,并移动两个指针。
    • 如果指针A指向的元素小于指针B指向的元素,则移动指针A,反之亦然。
  3. 结束条件:当任一链表的指针到达末尾时停止。
三、算法步骤
  1. 初始化两个指针 pApB 分别指向链表A和链表B的头节点。
  2. 初始化一个空的结果链表 result
  3. 遍历两个链表,比较 pApB 指向的节点:
    • 如果 pA.val == pB.val,将该值添加到 result,然后同时移动 pApB
    • 如果 pA.val < pB.val,移动 pA
    • 如果 pA.val > pB.val,移动 pB
  4. 返回结果链表。
四、示例代码(Python)
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

def getIntersection(headA, headB):
    dummy = ListNode(0)  # 哨兵节点
    tail = dummy  # 结果链表的尾节点
    pA, pB = headA, headB
    
    while pA and pB:
        if pA.val == pB.val:
            tail.next = ListNode(pA.val)  # 添加交集元素
            tail = tail.next
            pA = pA.next
            pB = pB.next
        elif pA.val < pB.val:
            pA = pA.next
        else:
            pB = pB.next
            
    return dummy.next  # 返回交集链表
五、复杂度分析
  • 时间复杂度:O(m + n),其中 m 和 n 分别为链表A和链表B的长度。
  • 空间复杂度:O(1)(如果不考虑结果链表的存储)。
六、总结

通过使用双指针法,可以高效地找出两个有序链表的交集元素。该方法不仅简单易懂,而且具有较好的时间和空间性能。理解这一方法对于处理有序数据结构的交集问题非常重要。


http://www.kler.cn/a/374689.html

相关文章:

  • LLMs在股票投资组合崩溃中的时间关系推理
  • Python | Leetcode Python题解之第522题最长特殊序列II
  • 在pycharm中使用sqllite
  • 《Python游戏编程入门》注-第4章2
  • Golang | Leetcode Golang题解之第516题最长回文子序列
  • 关于springboot跨域与拦截器的问题
  • mosh-react-course
  • 计算机毕业设计django+大模型租房推荐系统 租房可视化 租房大屏可视化 租房爬虫 spark 58同城租房爬虫 房源推荐系统
  • 在本地电脑部署属于你的AI大模型
  • 手敲Webpack 5:React + TypeScript项目脚手架搭建实践
  • Java面试题十四
  • C++中的依赖注入
  • 记录一次企业外部通过ssh 连接数据库的事DBeaver
  • Apache Solr 身份认证绕过导致任意文件读取漏洞复现(CVE-2024-45216)
  • Apache paimon表管理
  • 稀土抗菌剂:食品包装中的安全保障
  • Ubuntu 22.04 的Python3.11.8 安装
  • 本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——8ResNet模型的使用
  • CCNA对学历有要求吗?看看你是否有资格报考
  • Android OpenGL ES详解——模板Stencil
  • 鸿蒙生态给我们带来的机遇和挑战
  • 【CSS/SCSS】@layer的介绍及使用方法
  • 二百七十六、ClickHouse——Hive和ClickHouse非常不同的DWS指标数据SQL语句
  • NPM 包开发与优化全面指南
  • Resnet50进行迁移学习实现图片二分类
  • vue vxeui 上传组件 vxe-upload 全局配置上传方法,显示上传进度,最完美的配置方案