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

单链表——相交链表

方法一

我们可以定义两个指针分别指向链表的头部,遍历链表A使A的每一个节点都与B的每一个节点比较,若地址相等,则返回指向A链表的指针,若不想等则将A指向A的下一个节点。这样可以得知,假设A链表的长度为N,B链表的长度为M,则该想法的时间复杂度为O(M*N),可知,该想法效率较低。

方法二

我们可以先遍历两个链表。计算出两个链表的长度分别为多少,假设A链表的长度为N,B链表的长度为M,A链表比B链表短,则可以计算出AB链表相差M-N个节点。所以我们可以先将长链表的指针挪到与短链表同步的节点,然后两个指针同时进行,直到两个指针指向的地址相同时,再停止。由此可知,这个方法的时间复杂度为O(max(M,N))。那么我们现在来实现一下这个方法。

typedef struct ListNode ListNode;
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) 
{//首先判断两个链表是否有交点,并计算两个链表的长度ListNode*pcurA=headA;ListNode*pcurB=headB;int lenA=0;int lenB=0;while(pcurA){pcurA=pcurA->next;++lenA;}while(pcurB){pcurB=pcurB->next;++lenB;}//若尾节点地址不同,则两个链表不相交if(pcurA!=pcurB){return NULL;}//若相交,则找相交的节点,先将两个链表的指针都指向距离相交节点相同的位置,再同时走//使用假设法int gap=abs(lenA-lenB);ListNode*longList=headA;ListNode*shortList=headB;if(lenA<lenB){shortList=headA;longList=headB;}while(gap--){longList=longList->next;}while(longList!=shortList){longList=longList->next;shortList=shortList->next;}return shortList;
}

大家感兴趣的可以自行尝试哦~

. - 力扣(LeetCode)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 安美数字酒店宽带运营系统-任意文件读取
  • xss-labs通关攻略 16-20关
  • 【GIT】Idea中的git命令使用-全网最新详细(包括现象含义)
  • 【管理型文档】软件需求管理过程(原件)
  • qemu 跨架构
  • linux系统中内存和缓冲简介
  • 小实战项目-第二章2.1-IIC协议讲解? 什么是软件IIC 什么是硬件IIC 有什么区别如何编写代码--这章节主要讲解软件IIC,下一章节讲解硬件IIC协议
  • 哈夫曼树例题
  • Matlab R2022b使用Camera Calibrator工具箱张正友标定法进行相机标定附带标定前后对比代码
  • 论文翻译:Multi-step Jailbreaking Privacy Attacks on ChatGPT
  • 设计模式(四)
  • 掌握 Rust 中的 YAML 魔法:Serde_yaml 使用指南
  • 【前端开发】国际化开发工具i18n的使用教程
  • MySQL 数据库深度解析:安装、语法与高级查询实战
  • BMC解决方案丨服务器故障诊断与预测平台方案设计与实现
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • __proto__ 和 prototype的关系
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • interface和setter,getter
  • LeetCode算法系列_0891_子序列宽度之和
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Python socket服务器端、客户端传送信息
  • Redis学习笔记 - pipline(流水线、管道)
  • Solarized Scheme
  • TCP拥塞控制
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 给github项目添加CI badge
  • 基于HAProxy的高性能缓存服务器nuster
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 手写一个CommonJS打包工具(一)
  • 数据科学 第 3 章 11 字符串处理
  • 我看到的前端
  • 优化 Vue 项目编译文件大小
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • ionic异常记录
  • 阿里云移动端播放器高级功能介绍
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • (1) caustics\
  • (1)(1.9) MSP (version 4.2)
  • (2024,RWKV-5/6,RNN,矩阵值注意力状态,数据依赖线性插值,LoRA,多语言分词器)Eagle 和 Finch
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (LeetCode 49)Anagrams
  • (LeetCode C++)盛最多水的容器
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (二)springcloud实战之config配置中心
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (简单) HDU 2612 Find a way,BFS。
  • (九)c52学习之旅-定时器
  • (五)IO流之ByteArrayInput/OutputStream
  • (一)、软硬件全开源智能手表,与手机互联,标配多表盘,功能丰富(ZSWatch-Zephyr)
  • (自适应手机端)行业协会机构网站模板
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'