【LeetCode_160】相交链表:快慢指针

算法竞赛入门到进阶 --- 完整学习路线(含知识点讲解) 前言: 咳咳,接触算法竞赛也有一年了,却从来都没有进行过一次系统的学习,稀里糊涂的就这么搞了半年,如今,我决定认认真真的进行一次系统的复盘。嗯嗯,先把大体路线列出来,然后往后每天搞几篇,可能大三能完成,可能永远也不能写完这些,我只能慢慢来,一起共勉吧。冲了!(主要是太菜了,不系统学习下,怕是铜牌都拿不到呀!) 算法竞赛入门到进阶一、sort函数自定义排序二、c++容器的使用1.vector动态数组2.stack栈3.queue队列4.list链表5.set集合6.map映射三、二进制子集生成四、bfs. 阅读详情

题目描述:编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:

在节点 c1 开始相交。

示例 1:

输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3
输出:Reference of the node with value = 8
输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。

示例 2:

输入:intersectVal = 2, listA = [0,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1
输出:Reference of the node with value = 2
输入解释:相交节点的值为 2 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [0,9,1,2,4],链表 B 为 [3,2,4]。在 A 中,相交节点前有 3 个节点;在 B 中,相交节点前有 1 个节点。

注意:

如果两个链表没有交点,返回 null.
在返回结果后,两个链表仍须保持原有的结构。
可假定整个链表结构中没有循环。
程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存

解释:定义两个指针,第一轮让两个到达末尾的节点指向另一个链表的头部,最后若相遇则为交点(第一轮移动中消除了长度差)两个指针移动了相同的距离,若存在交点则返回,否则无交点,即各走了两条指针的长度

代码:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        if(headA==null || headB==null) return null;
        ListNode post=headB;//
        while(post.next!=null){
            post=post.next;
        }
        post.next=headB;//链表B构建成环

        ListNode first=headA;//快指针
        ListNode last=headA;//慢指针
        
        while(first!=null && first.next!=null){
            last=last.next;//指针下移
            first=first.next.next;//指针下移
            if(last==first){//若两指针相遇,则A有环
                last=headA;//将其中一个指针指向A的头节点
                while(last!=first){//此时两指针再相遇的地方就是两链表相交的地方
                    last=last.next;
                    first=first.next;
                }
                post.next=null;
                return first;//两链表相交节点
            }
        }
        post.next=null;
        return null;
    }
}

 

番外篇 | 关于YOLO11算法的改进点总结 关于YOLO11算法的改进点总结。🌈 阅读详情

相关推荐

相交链表(快慢指针)

LeetCode

m0_60416282的博客 362

毫米波雷达SLAM实战:如何在无GPS的地下隧道实现精准三维建图(附Python代码)

本文深入探讨了在无GPS信号的地下隧道等拒止环境中,如何利用毫米波雷达SLAM技术实现精准三维建图。文章系统分析了毫米波雷达点云数据稀疏、噪声多的挑战,并提供了从环境配置、核心算法(如特征提取、ICP配准、回环检测)到全局优化的完整实战解决方案,附有可运行的Python代码,帮助开发者构建鲁棒的自主导航与建图系统。

t8u9v0w1x的博客 240

【算法刷题日记】相交链表和环形链表【含剖析快慢指针原理】

本篇文章题来自于力扣,展示语言为Java,含面试常考题。

qq_63218110的博客 456

工业质检实战:如何用MVTec AD数据集训练你的第一个无监督异常检测模型

本文提供了一份基于MVTec AD数据集的工业质检实战指南,详细介绍了如何从零开始训练一个无监督异常检测模型。内容涵盖数据预处理、模型架构选型(如CAE、GAN与特征字典方法)、特征提取、损失函数设计以及关键的阈值确定与后处理流程,旨在帮助工程师快速掌握将AI技术落地于实际产线质检的核心步骤与调参经验。

weixin_29182481的博客 459

ESP32系列之LVGL(四):输入设备(外部按键)对接

本文详细介绍了如何在ESP32上使用LVGL库对接外部按键作为输入设备,包括硬件连接、驱动层实现和LVGL输入设备移植。通过具体代码示例和实战案例,帮助开发者快速实现按键控制UI界面,解决常见问题如按键无反应和控件跳转不正常。

weixin_30907935的博客 241

面试题 02.07. 链表相交

根据快慢法则,走的快的一定会追上走得慢的。 在这道题里,有的链表短,他走完了就去走另一条链表,我们可以理解为走的快的指针。 那么,只要其中一个链表走完了,就去走另一条链表的路。如果有交点,他们最终一定会在同一个位置相遇 # Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None

qq_43112537的博客 175

解决:Solving environment: failed CondaValueError: Malformed version string ‘~‘: invalid character(s).

解决:Solving environment: failed CondaValueError: Malformed version string '~': invalid character(s).

晚风微凉的博客 1万+

链表-快慢指针(C++)

链表是由一组在内存中不必相连(不必相连:可以连续也可以不连续)的内存结构Node,按特定的顺序链接在一起的抽象数据类型。我们常见的链表结构有单链表和双向链表。单链表,保存了下一个结点的指针,可以根据下一结点指针向下遍历双向链表,保存了向上一个结点和向下一个结点的指针,所以可以向上下两个方向遍历。单链表结构一般如下: 双向链表的结构一般如下: 在算法中,我们遇到的链表题目一般可以使用一些经典的思路求解。本篇博客主要讨论这些经典的链表解题思路之一,快慢指针。快慢指针也称龟兔赛跑算法,又叫判圈算法。具体方

ymhdt的博客 1950

华为OD机试双机位C卷-水库溃坝填补(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【水库溃坝填补】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。水库溃坝填补。

qq_45776114的博客 2109

RabbitMQ高级特性 - 生产者消息确认机制

为了保证信息 从生产者 发送到 队列,因此引入了生产者的消息确认机制.通过事务机制实现.通过发送确认机制(confirm 和 return)实现.因为事务机制比较消耗性能,在实际工作中用的也不多,因此这里主要介绍confirm 和 return机制来实现发送放的确认.a)confirm 确认模式如上图,confirm 确认模式主要保障于 生产者 到 交换机 的消息可靠性.如果 Exchange成功收到消息,那么 ConfirmCallback 这个回调 ack 参数就为true。

CYK_byte的博客 1886

寻找链表的相交点:快慢指针数学分析

题目描述:力扣 给定一个链表的头节点 head,返回链表开始入环的第一个节点。如果链表无环,则返回null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 不允许修改 链表。 分析过程: 力扣 当fast和slow相遇时: fast...

m0_51608959的博客 639

微信支付接口「系统繁忙 SYSTEM_ERROR」/「文件不存在」报错分析与解决方案 接口开发实现SDK

微信支付的“平台证书模式”只有5年的有效期,过期后微信支付将不再签发新的平台证书,转而要求开发者使用“微信支付公钥”来处理敏感信息加密及回调签名验证。然而,由于以下几点原因,许多开发者在调用 获取平台证书。尽管微信支付在技术迭代上有其必要性,但报错设计过于不友好。诸如“系统繁忙”这样的提示很难直接关联到平台证书失效或公钥切换问题。这样的信息表达,开发者不仅看不懂,还需要花费大量时间分析排查,非常影响效率。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 779

Leetcode 160. 相交链表(快慢指针)

描述 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 c1 开始相交。 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 输出:Reference of the node with value = 8 输入解释:相交节点的值为 8 (注意,...

sunlanchang的博客 523

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

leetcode160相交链表java题解(快慢指针)

1.题目 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 c1 开始相交。 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 输出:Reference of the node with value = 8 输入解释:相交节点的值为 8 ...

老简单题 163

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【Java】【JS】LeetCode - 哈希表 - 快慢指针 - # 160 相交链表

输入解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。对链表A中的每一个结点 a_iai​,遍历整个链表B并检查链表B中是否存在结点和 a_iai​ 相同。遍历链表 A 并将每个结点的地址/引用存储在哈希表中。然后检查链表 B 中的每一个结点 b_i是否在哈希表中。若在,则 b_i为相交结点。/***/

2401_85117695的博客 1021

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【链表OJ】相交链表 环形链表1

leetcode 160. 相交链表 和 leetcode 141.环形链表,用c语言实现,详解

weixin_65186652的博客 2085

【LeetCode_160】相交链表

LeetCode第160题【相交链表】的C++解法

有梦想的电信狗 1415

【数据结构】LeetCode160.相交链表 138.随即链表复制 牛客——链表回文问题

LeetCode 160 与138 题 牛客 OR36题

凤年徐的博客 2116

链表面试题2以及快慢指针

面试题,快慢指针

2401_86415114的博客 1013

【算法】链表:160.相交链表(easy)+双指针

快慢指针寻找相交结点。

m0_73726899的博客 1127

代码随想录算法训练营第四天|LeetCode24. 两两交换链表中的节点,LeetCode19. 删除链表的倒数第N个结点,LeetCode160. 相交链表,LeetCode142. 环形链表 II

思路:依旧创建一个虚拟头结点,方便之后进行操作,然后让cur指向当前的虚拟头结点,然后想明白循环的终止条件是cur->next=NULL(总节点数为偶数的情况)或者cur->next->next=NULL (总节点数为奇数的情况,最后剩一个节点不用交换),在循环内需要将cur->next和cur->next->next->next保存为临时变量,剩余操作就是交换了,以及在交换结束后cur需要向后移动两个位置。

Liverpool0519的博客 3127

【LeetCode】关于链表的环、相交等问题

【LeetCode】关于链表的环、相交等问题 1、链表环形 LeetCode上关于环形链表有两个题: Q141–easy 内容:判断一个链表是否有环。 Q142–medium 内容:判断一个链表是否有环,并返回链表环形开始的第一个节点。 题目141思路分析: ​ 判断一个链表是否有环,可以使用“快慢指针”的方法,快指针一次走两格即fast = fast.next.next,慢指针一次走一格即slow = slow.next。可以分为两种情况: 无环:即遍历到最后,肯定是快指针fast

qq_42999061的博客 532

LeetCode 刷题【160. 相交链表】

查找两个相交链表的交点。通过计算两个链表的长度差,调整较长链表的起始指针位置使其与较短链表同步移动,然后同时遍历两个链表直到找到相同节点。

gzkhxohc的博客 251

LeetCode 题目-141.环形链表/160.相交链表(python实现)

作为要准备踏入码农行业的人来说,要准备校招,怎么能不去刷刷LeetCode呢? 141.环形链表 题目要求: 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 示例: 分析: 方法一:利用库函数求解 class Solution: def my...

A_彬的博客 519

链式成长:链表算法每日一练(141环,160相交)

141. 环形链表 | 🟠 | 160. 相交链表 | 🟢 |

qq_51749909的博客 929
上一篇: 【LeetCode_112】路径总和(深度优先)
下一篇: 【LeetCode_100】相同的树(递归应用)
West Money
博客等级 码龄9年 7粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值