【实战】ACM 选手图解 LeetCode 相交链表

【CT】LeetCode手撕—160. 相交链表 【代码】【CT】LeetCode手撕—160. 相交链表。 阅读详情

大家好呀,我是直男蛋。

今天来做相交链表,这道题本来是难度简单的水题,但是有两个奇怪点把我给整楞了。

一个就是题意,另一个就是解题方式,感觉直接把我的直男属性给暴露了。

具体的到下面细聊,现在先开始看题。

ebfe8f04df82891c77f29b869f7f753

LeetCode 160:相交链表

题意

给出两个单链表的头节点,找出两个单链表相交的起始节点。

示例

e1558939fd5da6eaf1dcc83a84aa50a

提示

题目保证不存在环。

  • len(listA) = m, len(listB) = n

  • 0 <= m, n <= 3 * 10^4

  • 1 <= Node.val <= 10^5

  • 0 <= skipA <= m, 0 <= skipB <= n

题目解析

在说我的解法之前,我先来说一下文章开头我说的是啥意思。

这个题目一开始题意给我看楞了,不看示例,打眼看上去还以为是找数值相等的节点。

估计很多臭宝容易看懵,这道题其实是找相交节点的指针(即同一节点,引用完全相同),而不是单纯遍历找第一个数值相同的节点,这点大家要搞清楚。

光这个出题的题意,我感觉就得值个难度 hard!

bf8421e47e72f8a3724ad76bdb37134

其实搞清楚了题意,稍微一想解法就能出来。

在我劈里啪啦的敲完代码然后 AC 的时候,随意点开了力扣的题解区,官方的题解给我看楞了。

虽然用了双指针,但是它的解法楞是用上了数学的思想。怕你们在做的时候会先去看题解,然后又看不懂别人怎么个思想,所以这里就给臭宝们讲一下**“浪漫”的做法**。

1266ec8549c864358f70b0c8ab7c9f1

官方的方法是:

  • 链表 A 的指针 flagA 从链表 A 的头节点开始遍历完链表 A,再遍历链表 B
  • 链表 B 的指针 flagB 从链表 B 的头节点开始遍历完链表 B,再遍历链表 A

这样的话就消除了链表 A 和 B 的长度差。

假设链表 A 长度为 a,链表 B 长度为 b,两个链表相交的部分长度为 c。

当走到相交节点时:

  • flagA 走过的长度为:a + (b - c)
  • flagB 走过的长度为:b + (a - c)

这种做法,不管两个指针是否相交,他们走过的长度都是一样的,所以就有了公式:
a + ( b − c ) = b + ( a − c ) a + (b - c) = b + (a - c) a+

LeetCode刷题(ACM模式)-02链表 阅读详情

相关推荐

【LeetCode】ACM完整代码写数据结构(以树、链表为例)c++

博主现在从PTA过渡到了力扣进行刷题,近期在实习面试过程中也发现需要现场写完整代码(也就是ACM代码),从力扣注重函数实现的格式中还有点难切换出来,但是在搜索过程中这种完整代码的博客内容好少啊。于是也动手写了完整的代码和大家一起分享。重点在于树和链表,此篇以力扣上的题为例进行展示。由于这里仅是对完整代码进行展示,因而不对解题内容作解析。 反转链表 / 剑指 Offer 24. 反转链表 #include <iostream> #include <vector> usin

cutefery的博客 2847

接口操作MySQL跟MongoDB事务回滚问题

通常使用的事务注解:@Transactional 是不会对MongoDB生效的,但是在一些生产接口中无法避免同时使用MySQL跟MongoDB的操作。

weixin_45932023的博客 1579

多个MOS管并联应用场景的四大要点

动态运行时,阈值电压Vgsth最低的MOS管首先打开,最后关闭。这种MOS管一般会占据更多的开关损耗,并且在开关转换过程中,承担了更高的电应力。

VBsemi的博客 3755

CST仿真提速秘籍:用好Local Mesh,别再让简单结构拖慢你的仿真速度

本文深入探讨了CST仿真中Local Mesh技术的应用,通过区域加密与全局排除策略,显著提升电磁仿真效率。针对5G天线阵列、微波滤波器等多尺度结构模型,提供了网格划分的黄金法则和实战技巧,帮助工程师优化仿真速度与精度,特别适用于电磁仿真和网格设置场景。

weixin_27134495的博客 409

避坑指南:STM32H7不同DMA控制器(MDMA/DMA2D/BDMA)到底该用哪个?

本文深入解析STM32H7系列芯片的DMA控制器选型策略,涵盖MDMA、DMA2D、BDMA等不同控制器的架构原理与性能对比。通过实际项目案例,提供高速TCM数据搬运、GUI加速、低功耗传输等场景的选型决策树,并分享性能优化与调试技巧,帮助工程师避开常见陷阱,提升系统效率。

weixin_26876073的博客 448

Mamba实战:如何用Samba框架轻松搞定RGB-D显著性检测(附避坑指南)

本文提供了基于Samba框架进行RGB-D显著性目标检测的实战指南。详细解析了从环境配置、数据预处理到模型推理与可视化的全流程,并重点剖析了多模态数据融合中的常见陷阱与调试技巧,旨在帮助开发者高效部署这一基于Mamba的先进视觉模型,规避工程实践中的典型问题。

dapp9builder的博客 615

Hermes 教程 03:Skills 系统

摘要:Hermes Skills是一种自我改进机制,可将解决问题的经验保存为可复用技能文档。v0.13.0版本遵循agentskills.io开放标准,与Claude Skills互通。技能创建流程包括发现问题、创建技能文件、加载使用和优化更新四个阶段。系统提供技能检索和自维护机制(Curator),支持技能媒体路由和多种管理命令。内置技能涵盖开发调试、创意头脑风暴等场景,通过积累技能使Hermes更适应用户需求。

程序猿_三产 734

Python 爬虫实战:亚马逊 + eBay 商品信息跨平台抓取(价格 / 销量 / 评价对比)

亚马逊和 eBay 是全球知名的电商平台,拥有海量的商品信息。对于消费者来说,比较不同平台上的商品价格、销量和用户评价可以帮助他们找到性价比最高的商品。对于商家而言,了解竞争对手的商品信息有助于优化自身的产品策略和定价策略。然而,手动在两个平台上逐一比较商品信息是非常耗时且低效的。因此,开发一个能够自动抓取并对比这两个平台商品信息的爬虫工具具有重要的实际意义。

yansideyucsdn的博客 618

生成模型实战 | 基于Transformer生成音乐

本文介绍了基于Transformer架构的音乐生成方法,将音乐视为一系列事件序列进行处理。与将音乐表示为多维图像的MuseGAN不同,该方法使用类似GPT的仅解码器模型,基于先前事件预测下一个音乐事件。模型使用MIDI格式的钢琴音乐数据,通过分词处理将音符转换为note-on、note-off、time-shift和velocity四种事件类型,共388个独特词元,映射为索引序列后输入网络。训练完成后,可通过调整温度参数控制生成音乐的新颖性,从而创作出风格类似训练数据且连贯逼真的音乐作品。

盼小辉丶的博客 5899

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: 【实战】ACM 选手图解 LeetCode 环形链表Ⅱ
下一篇: 【图解】ACM 选手带你玩转栈和队列
编程文青李狗蛋
博客等级 码龄5年 27粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值