Leetcode_相交链表

✨✨所属专栏:LeetCode刷题专栏✨✨

✨✨作者主页:嶔某✨✨

题目:

 题解:

看到这个题目首先我们要排除链表逆置的想法,如图、因为c1节点只有一个next指针,逆置后不可能同时指向a2和b3节点。

其次有的的同学想到一个一个节点来比较值,首先这是错误的。

第一:AB两个链表的长度不一定相同,不能相比。

第二:比较节点中的值有一定的特殊情况,我们要比的时节点的地址。

常规解法:

先分别算出A、B两个链表的长度lenA,lenB,先让长的链表的头指针走|lenA - lenB|,然后再一起走,以longlist != shortlist为循环的终止条件

struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) 
{   int lenA = 0;int lenB = 0;struct ListNode *cur1 = headA;struct ListNode *cur2 = headB;while(cur1->next){lenA++;cur1 = cur1->next;}while(cur2->next){lenB++;cur2 = cur2->next;}int Difference = abs(lenA - lenB);   struct ListNode *longlist = headA;struct ListNode *shortlist = headB;if(lenA < lenB){longlist = headB;shortlist = headA;}while(Difference--)longlist = longlist->next;while(longlist && shortlist){if(longlist == shortlist)return longlist;longlist = longlist->next;shortlist = shortlist->next;}return NULL; 
}

大神解法:

让A链表从头遍历,当pA为空时,pA = headB;B链表从头遍历,当pB为空时,pB = headA。让每个链表都走完两个链表的路程,最后它们一定会在相交节点处相遇

 

struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB)
{if(headA == NULL || headB ==NULL) return NULL;struct ListNode *pA = headA;struct ListNode *pB = headB;while(pA != pB){pA = pA == NULL?headB:pA->next;pB = pB == NULL?headA:pB->next;}return pA;
}

本期博客到这里就结束了,如果有什么错误,欢迎指出,如果对你有帮助,请点个赞,谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/5268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【RabbitMQ】可靠性策略(幂等,消息持久化)

MQ可靠性策略 发送者的可靠性问题生产者的重连生产者确认 MQ的可靠性数据持久化Lazy Queue 消费者的可靠性问题消费者确认机制消息失败处理 业务幂等性简答问题 发送者的可靠性问题 生产者的重连 可能存在由于网络波动&#xff0c;出现的客户端连接MQ失败&#xff0c;我们可以…

JavaScript 中的 this 到底指向谁? 今天彻底把它征服!!!

概述 我们知道&#xff0c;JS 中的 this 指向问题&#xff0c;一直是一个经久不衰的重点和考点。那么它到底难不难呢&#xff1f;怎么说呢&#xff1f;它也难也不难&#xff0c;你要是不把它理清楚&#xff0c;随意变化一下就能把你绊倒&#xff1b;但是你要是把他理清楚了以后…

VUE+TS使用elementUI的el-checkbox双重v-for循环做勾选

html部分 <template><div class"hello"><el-form :model"elForm"> <!-- cities对象数组形式 --><el-form-item v-for"(item, topIndex) in cities" :key"topIndex"> <!--item.checked 是每一个item…

最新游戏陪玩语音聊天系统3.0商业升级独立版本源码+搭建教程

首发价值29800元的最新商业版游戏陪玩语音聊天系统3.0商业升级独立版本源码。 下 载 地 址 &#xff1a; runruncode.com/php/19748.html 1. 新增人气店员轮播功能。 2. UI界面优化&#xff0c;包括游戏图标展示和分类展示的改进。 3. 增加动态礼物打赏功能。 4. 新增礼…

SQL底层执行过程

MySQL 的查询流程 客户端请求连接器 负责与客户端的通信,是半双工模式&#xff08;半双工(Half Duplex)数据传输指数据可以在一个信号载体的两个方向上传输,但是不能同时传输。&#xff09;&#xff0c;验证请求用户的账户和密码是否正确&#xff0c;③如果用户的账户和密码验…

Codigger数据篇(下):数据安全的全方位保障

在数字化浪潮中&#xff0c;数据已成为现代企业的核心财富。Codigger作为领先的数据服务平台&#xff0c;深知数据安全对于用户的重要性&#xff0c;因此在深挖数据价值的同时&#xff0c;我们始终坚守数据安全防线。 一、双重加密技术保障 Codigger平台运用先进的加密通信和…

MATLAB初学者入门(22)—— 哈希算法

哈希算法在计算机科学中广泛用于数据管理、安全、错误检测等多种应用。在MATLAB中&#xff0c;可以通过内置函数或自定义函数来实现哈希算法&#xff0c;以便于数据的快速检索、唯一性验证和数据完整性检查。 案例分析&#xff1a;使用哈希算法快速检索数据 假设我们有一个大型…

vue2.7与vue2.6、vue3的区别

官网链接&#xff1a;https://v2.cn.vuejs.org/v2/guide/migration-vue-2-7.html -组合式与选项式 选项式&#xff1a;export default { 各种选项关键字名&#xff0c;都定好了&#xff0c;无需引入&#xff0c;配对放置即可}

RabbitMQ Transport indicated EOF 总结

Rabbitmq报错 pika.exceptions.IncompatibleProtocolError StreamLostError (‘Transport indicated EOF‘,) 网上的答案是端口写错了&#xff0c;产生此报错的原因是我将port写成了15672&#xff0c;15672是rabbitmq管理页面的端口 port 15672rabbitmq需要通过端口5672连…

stm32单片机开发一、中断之外部中断实验

stm32单片机的外部中断和定时器中断、ADC中断等都由stm32的内核中的NVIC模块控制&#xff0c;stm32的中断有很多中&#xff0c;比如供电不足中断&#xff0c;当供电不足时&#xff0c;会产生的一种中断&#xff0c;这么多中断如果都接在CPU上&#xff0c;或者说CPU去处理&#…

Leetcode—2639. 查询网格图中每一列的宽度【简单】

2024每日刷题&#xff08;121&#xff09; Leetcode—2639. 查询网格图中每一列的宽度 实现代码 class Solution { public:int func(int num) {if(num 0) {return 1;}int len 0;while(num ! 0) {len;num / 10;}return len;}vector<int> findColumnWidth(vector<ve…

[开发|JAVA] asdf安装adoptium openJDK

编写原因 asdf使用install命令安装adoptium openJDK&#xff0c;会因为网络的原因导致安装失败&#xff0c;本篇文章介绍在adoptium官方下载压缩包安装openJDK。 openjdk下载地址 Eclipse Temurin 安装 以temurin-17.0.99为例演示安装 在temurin-17.0.99安装包所在地址打…

如何测试响应式网站

我们每天通过多种设备访问互联网。移动电话&#xff0c;台式机/笔记本电脑&#xff0c;平板电脑&#xff0c;平板电脑…我们所掌握的设备数量已经增长为天文数字。作为消费者&#xff0c;体验很棒。我们可以随时随地在任何设备上自由访问互联网。但对于Web开发人员&#xff0c;…

双非二本找工作前的准备day15

学习目标&#xff1a; 每天复习代码随想录上的题目1-2道算法&#xff08;时间充足可以继续&#xff09; 今日碎碎念&#xff1a; 1&#xff09;双非本真难受... 力扣刷题 算法 力扣20&#xff1a;20. 有效的括号 class Solution {public boolean isValid(String s) {//这里…

类加载子系统之类的生命周期(待完善)

0、前言 文中大量图片来源于 B站 黑马程序员 0.1、类加载子系统在 JVM 中的位置 类加载器负责的事情是&#xff1a;加载、链接、解析 0.2、与类的生命周期相关的虚拟机参数 参数描述-XX:TraceClassLoading打印出加载且初始化的类 1、类的生命周期 堆上的变量在分配空间的时…

【C++STL详解(三)】------vector的介绍与使用

目录 前言 一、关于数组 二、vector的介绍 三、vector的使用 Ⅰ、默认成员函数 1.构造函数 2.赋值重载 3.析构函数 Ⅱ、容量 1.size(&#xff09; 2.capacity() 3.empty() 4.resize() 5.reserve() Ⅲ、遍历操作 1.迭代器 begin() end()&#xff08;正向迭代器…

ubuntu18源码安装postgresql15.2数据库

由于官方的源只能安装到pg10这个版本&#xff0c;整了好一会没有成功就改为源码安装了。 下载源代码源码并解压 wget https://ftp.postgresql.org/pub/source/v15.2/postgresql-15.2.tar.gztar -xf postgresql-15.2.tar.gz cd postgresql-15.2/ 安装C相关开发库和编译工具 ap…

Java解决找出字符串中第一个匹配项的下标

Java解决找出字符串中第一个匹配项的下标 01 题目 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 示…

网络扫描技术

网络扫描技术是信息安全领域中的一项重要技术&#xff0c;它旨在发现网络中的设备、服务、漏洞和配置情况&#xff0c;为安全评估、渗透测试或恶意攻击做准备。以下是几种主要的网络扫描技术&#xff1a; PING扫射&#xff08;Ping sweep&#xff09;&#xff1a; 通过发送ICMP…

element 分页切换时:current-page无效 页数不会跟着一起切换

问题回溯&#xff1a;使用el-pagination组件 选择切换当前分页 页数为2 问题结果&#xff1a;el-pagination组件 当前页切换失败 一直都是 1&#xff0c;接口传参分页数据是2&#xff0c;打印当前分页也是2 解决方案1&#xff1a;使用 current-page参数 .sync 修饰符 解决方案2…