[Leetcode] 相交链表

news/2023/12/9 16:27:59

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。

图示两个链表在节点 c1 开始相交:

题目数据保证整个链式结构中不存在环。

注意,函数返回结果后,链表必须保持其原始结构 。

自定义评测:

评测系统 的输入如下(你设计的程序不适用此输入):

intersectVal - 相交的起始节点的值。如果不存在相交节点,这一值为 0

listA - 第一个链表

listB - 第二个链表

skipA - 在 listA 中(从头节点开始)跳到交叉节点的节点数

skipB - 在 listB 中(从头节点开始)跳到交叉节点的节点数

评测系统将根据这些输入创建链式数据结构,并将两个头节点 headA 和 headB 传递给你的程序。如果程序能够正确返回相交节点,那么你的解决方案将被视作正确答案 。

题目链接:https://leetcode.cn/problems/intersection-of-two-linked-lists

分析

如果两个链表相交,短的链表会先走到相交点,相交点之后的长度是相同的;相交点之前的长度可能不同,两条链表走到末尾,各自指向对方的头节点可以消除长度差,最终在相交点相遇

实现

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = Noneclass Solution:def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> Optional[ListNode]:pa = headApb = headBwhile pa != pb:pa = pa.next if pa else headBpb = pb.next if pb else headAreturn pa

指针 pa 指向 A 链表,指针 pb 指向 B 链表,依次往后遍历

如果 pa 到了末尾,则 pa = headB 继续遍历

如果 pb 到了末尾,则 pb = headA 继续遍历

如果存在相交点,pA和pB会在相交的处相遇(pa == pb)

如果不存在相交点,pA和pB会一直遍历完另一条链表,最终指向null


http://www.ppmy.cn/news/9505.html

相关文章

【Unity3D编辑器扩展】Unity3D中实现UI界面控制,UI界面的显示和隐藏实现

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客QQ群:1040082875 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 在开发中,可能遇到管理…

hudi实战-- hudi on flink 参数配置大全

简介 FlinkSQL读写hudi, 官方提供定义主键、写入方式、合并记录、启用/禁用异步压缩或选择要读取的查询类型等配置参数。可以根据业务类型合理的设置这些配置项,不仅可以提高Flink任务读写hudi的性能,还可以节约机器资源。本文将详细介绍hudi on flink 参数配置大全。 基本参…

HTML防数据采集

什么是防采集 就是我们想利用爬虫工具采集某个网站的数据(前提当然是公开合法数据),但网站不想给你采集而设置的技术阻挡措施。 常见的防止采集方案 利用输入验证码框验证,在采集某些网站过程中,要求你输入验证码&a…

怎么安装jupyter notebook的jupyter_contrib_nbextensions

https://www.bilibili.com/read/cv15617808/ 1.在终端输入代码: pip install jupyter_contrib_nbextensions -i https://pypi.douban.com/simple/ 执行一下 jupyter contrib nbextension install --user --skip-running-check 执行一下 打开jupyter notebook&a…

Servlet 综合案例(empProject)

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:Java案例分…

HTML5本地存储详解

html5 本地存储。前言一、localStorage 对象二、sessionStorage 对象三、localstorage 与 cookie 的区别四、localStorage 和 sessionStorage 二者的区别总结前言 ☀️本地存储是指在客户端存储数据,HTML5 为我们提供了两种 API,分别是 localStorage 与 …

Step08.添加自定义命令和生成的文件

Step08.添加自定义命令和生成的文件 假设,出于本教程的目的,我们决定不使用平台log和exp函数,而是希望生成一个用于mysqrt函数的预计算值表。 在本节中,我们将在构建过程中创建表,然后将该表编译到应用程序中。 移除…

C/C++重点八股文

1.C/C关键字 1.1 static(静态)变量 在C中,关键字static是静态变量: 静态变量只会初始化一次,然后在这函数被调用过程中值不变。在文件内定义静态变量(函数外),作用域是当前文件&a…

使用Nordic的nrf52832控制指定从机(一主多从)

一主多从1. 想要实现的功能2. 从机3. 主机3.1 主从机连接个数设置3.2 扫描过滤3.3 连接和断开连接3.4 按键处理3.5 从机读写3.5.1 写3.5.1 读4运行效果1. 想要实现的功能 1.主机能连接多个从机(主机作为控制器,从机作为节点)。 2.主机能使用…

12个爆款 Java 开源项目

1JavaGuidehttps://github.com/Snailclimb/JavaGuide Star 10503【Java学习面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。2symphonyhttps://github.com/b3log/symphony Star 6664一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)平台…

多线程之线程安全问题

1.线程安全示例 class Count{int a 0;public void add(){a;} } public class ThreadDemo8 {public static void main(String[] args) {Count count new Count();Thread t1 new Thread(()->{for (int i 0; i < 5_0000; i) {count.add();}});Thread t2 new Thread(()…

深度学习各子领域略览及术语列表

诸神缄默不语-个人CSDN博文目录 最近更新时间&#xff1a;2023.1.5 最早更新时间&#xff1a;2023.1.5 有监督supervised / 无监督unsupervised分类 多分类multi-class多标签multi-label极限多标签文本分类XMTC&#xff08;NLP课题入门 | 极限多标签文本分类 NLP课题入门 | 极…

【华为OD机试真题2023 JAVA】查找充电设备组合

华为OD机试真题,2023年度机试题库全覆盖,刷题指南点这里 查找充电设备组合 时间限制:5s 空间限制:256MB 限定语言:不限 题目描述: 某个充电站,可提供n个充电设备,每个充电设备均有对应的输出功率。任意个充电设备组合的输出功率总和,均构成功率集合P的1个元素。功率集…

【三】3D匹配Matching之曲面匹配Surface—Based——create_surface_model()算子

&#x1f60a;&#x1f60a;&#x1f60a;欢迎来到本博客&#x1f60a;&#x1f60a;&#x1f60a; &#x1f31f;&#x1f31f;&#x1f31f; Halcon算子太多&#xff0c;学习查找都没有系统的学习查找路径&#xff0c;本专栏主要分享Halcon各类算子含义及用法&#xff0c;有…

uniapp 填坑之旅---udb微信小程序端显示异常

功能描述&#xff1a;A页面展示列表a&#xff0c;点击a&#xff0c;进入B页面&#xff0c;展示a对象关联的子对象b。在B页面中&#xff0c;通过unicloud-db组件manual模式加载&#xff0c;具体代码按照官网示例来写。问题描述&#xff1a;代码实现后&#xff0c;一直在H5调试&a…

Step10.选择静态库或共享库

Step10.选择静态库或共享库 在本节中&#xff0c;我们将展示如何使用BUILD_SHARED_LIBS变量来控制add_library()的默认行为&#xff0c;并允许控制如何构建没有显式类型&#xff08;STATIC、SHARED、MODULE或OBJECT&#xff09;的库。 为了实现这一点&#xff0c;我们需要将B…

【C语言】volatile 关键字

目录一、前言二、C语言中变量的访问1. 读变量2. 写变量三、代码优化1. 硬件层面&#xff1a;2. 软件层面&#xff1a;四、volatile的定义五、volatile的应用场合1. 中断2. 多线程3. 硬件寄存器一、前言 volatile 是 C语言 中规定的一个关键字&#xff0c;C语言课程中很少会提及…

【BSP视频教程】BSP视频教程第25期:CAN/CANFD/CANopen专题,CAN知识点干货分享, 收发执行过程和错误帧处理(2023-01-03)

视频教程汇总帖&#xff1a;【学以致用&#xff0c;授人以渔】2023视频教程汇总&#xff0c;DSP第10期&#xff0c;ThreadX第5期&#xff0c;BSP驱动第25期&#xff0c;USB实战第5期&#xff0c;GUI实战第3期&#xff08;2023-01-03&#xff09; - STM32F429 - 硬汉嵌入式论坛 …

一些加速库Blas OpenMP等

一些加速库Blas OpenMP等 一、OpenMP1.1 多执行绪的概念1.2 多执行绪的程式1.3 OpenMP 的基本使用1.4 OpenMP使用详解二、MPI (Message Passing Interface)三、 CUDA3.1 CUDA发展历程3.2 CUDA体系结构3.3 CUDA工具包3.4 nvcc C语言编译器3.5 CUDA的运算3.6 GPU并行计算过程一、…

MATLAB APP 设计实践(一)UART通信(上篇)

引言UART通信属于异步串行通信&#xff0c;通信速率比较低&#xff0c;在一些速度要求不高的场合常用来作为多设备之间的控制与被控制方式。例如以UART串口通信作为上位机侧与运行设备之间的通信形式&#xff0c;实现上位机对设备的操控以及检测设备运行状态等。那么谈到了上位…
最新文章