【算法】链表-20240105

在这里插入图片描述


这里写目录标题

  • 一、LCR 023. 相交链表
  • 二、142. 环形链表 II

一、LCR 023. 相交链表

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

在这里插入图片描述

在这里插入图片描述

提示:

listA 中节点数目为 m
listB 中节点数目为 n
0 <= m, n <= 3 * 104
1 <= Node.val <= 105
0 <= skipA <= m
0 <= skipB <= n
如果 listA 和 listB 没有交点,intersectVal 为 0
如果 listA 和 listB 有交点,intersectVal == listA[skipA + 1] == listB[skipB + 1]

进阶:能否设计一个时间复杂度 O(n) 、仅用 O(1) 内存的解决方案?

分析
这道题比较容易想到的是,创建一个hash表,然后循环依次A,将A的所有节点添加至Hash表中。
再循环依次B,每次判断B的当前节点是否在hash表中。
代码如下:

class Solution:def getIntersectionNode(self,headA,headB):d={}while headA:d[headA]=headAheadA=headA.nextwhile headB:if d.get(headB):return headBheadB=headB.next()return None

这样的思路可以通过,但是题目说了程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。
hash表构造了额外的O(n)空间复杂度,那么如何来实现使用O(1)的时间复杂度完成呢?

思路:
假设相交前A链表的长度为x,B链表的长度为z
两个链表相交的点为图中的w
相交后共同的长度为y。
我们分别创建p1、p2两个指针指向A、B
当p1或者p2走到头时,则将指针重新指向另外的一个链表。
当p1、p2相等时终止,返回p1或p2就是第一个相交节点。
因为p1、p2走过的路程都是x+y+z!

在这里插入图片描述

class ListNode:def __init__(self, x):self.val = xself.next = Noneclass Solution:def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:node_a = headAnode_b = headBwhile node_a or node_b:if node_a == node_b:return node_aif node_a:node_a = node_a.nextelse:node_a = headBif node_b:node_b = node_b.nextelse:node_b = headAreturn

二、142. 环形链表 II

中等

给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。
不允许修改 链表。
在这里插入图片描述
思路:使用双指针法解决
本题的求解过程中,双指针会产生两次相遇
双指针的第一次相遇:
设两指针fast,slow指向链表头部head
令fast每轮走2步,slow每轮走 1步
执行以上两步后,可能出现两种结果:

第一种结果:fast指针走过链表末端,说明链表无环,此时直接返回null
如果链表存在环,则双指针一定会相遇。因为每走1轮,fast与slow的间距+1,fast一定会追上slow。

当fast == slow时,当双指针相遇时:快指针重新指向链表头部节点,slow和fast同时每轮向前走1步。
当fast指针走到f=a步时,slow指针走到s=a+b步,此时两个指针重合,并且同时指向链表环入口,返回slow指向的节点即可。

class Solution1:def detectCycle(self, head):fast, slow = head, headwhile True:if not fast and not fast.next:returnfast=fast.next.nextslow=slow.nextif fast == slow:breakfast = headwhile fast != slow:fast, slow = fast.next, slow.nextreturn fast

解题思路步骤
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

window 下载安装 Studio 3T

这里 我们先访问官网 https://studio3t.com/ 然后 他会弹出提示 如果您同意使用cookies和类似技术进行市场研究或广告目的&#xff0c;并希望获得额外功能&#xff0c;您可以点击“Accept all”按钮。 如果您不同意使用cookies和类似技术进行上述目的&#xff0c;您可以点击“…

大模型的实践应用16-一种针对大型预训练模型的微调技巧:Adapter-Tuning方法的实战应用,原理详细介绍

大家好,我是微学AI,今天给大家介绍一下大模型的实践应用16-一种针对大型预训练模型的微调技巧:Adapter-Tuning方法的实战应用,原理详细介绍。Adapter-Tuning 是一种针对大型预训练模型微调的技术,它可以在保持模型参数数量较小的情况下增加模型的表现。该技术将适配器插入…

ffmpeg 改变帧率,分辨率,时长等命令

ffmpeg -i elva.mp4 -ss 00:00:20 -t 00:00:30 -c:v copy -c:a copy output1.mp4 视频截取&#xff0c;开始时间和时长,-ss 00:00:20 -t 00:00:30 ffmpeg -i output1.mp4 -c:v libx265 output265.mp4 -c:v libx265,264转265 ffmpeg -i output1.mp4 -c:v libx264 output264.mp4 …

Java面试项目推荐,异构数据源数据流转服务DatalinkX

前言 作为一个年迈的夹娃练习生&#xff0c;每次到了春招秋招面试实习生时都能看到一批简历&#xff0c;十个简历里得有七八个是写商城或者外卖项目。 不由得想到了我大四那会&#xff0c;由于没有啥项目经验&#xff0c;又想借一个质量高点的项目通过简历初筛&#xff0c;就…

CTFhub-Web-Web前置技能-“302跳转“

题目信息 HTTP临时重定向&#xff0c;题目截图如下所示&#xff1a; 分析过程 看到跳转路径为&#xff1a;http://challenge-d1a96d97eaecf029.sandbox.ctfhub.com:10800/index.html 分析可能存在重定向问题&#xff0c;如果要想获得flag&#xff0c;则可能存在http://chal…

nodejs中ffcreator启动

ffcreator安装 安装环境及依赖 node.js环境FFmpegnode-canvasheadless-gl 安装FFCreator npm i ffcreator --save启动项目 有显示设备的电脑&#xff1a;npm start无显示设置的服务器&#xff1a;xvfb-run -s "-ac -screen 0 1280x1024x24" npm start next.js中…

Linux平台下gcc安装升级

文章目录 一、下载gcc源码二、配置三、编译四、安装 一、下载gcc源码 到gcc官网下载所要安装的版本&#xff0c;例如&#xff1a;gcc-5.5.0。 二、配置 首先确保系统已经安装了必要的依赖项。在命令行中运行以下命令来更新包管理器并安装所需的构建工具&#xff1a; sudo a…

element中Tree 树形控件实现多选、展开折叠、全选全不选、父子联动、默认展开、默认选中、默认禁用、自定义节点内容、可拖拽节点、手风琴模式

目录 1.代码实现2. 效果图3. 使用到的部分属性说明4. 更多属性配置查看element官网 1.代码实现 <template><div class"TreePage"><el-checkboxv-model"menuExpand"change"handleCheckedTreeExpand($event, menu)">展开/折叠&l…

java 使用 jtransforms 傅里叶库通过时域转频域实现wav 音频的加速与变慢效果

引入 maven 依赖&#xff1a;<dependency><groupId>net.sourceforge.jtransforms</groupId><artifactId>jtransforms</artifactId><version>2.4.0</version></dependency> FourierTransformTest.java&#xff1a; import edu.…

一、Vue3基础[常用的循环]

一、循环 1. filter 解释&#xff1a;filter 方法会创建一个新的数组&#xff0c;其中包含满足指定条件的所有元素。这个方法非常适合循环遍历数组并根据特定条件过滤元素的情况。例如&#xff0c;可以使用 filter 方法来找出数组中所有大于特定值的元素&#xff0c;或者找出…

华为bgp之多级RR及团体属性、正则表达式多种应用案例

1、实现总部和分部的oa、财务网段互通 2、分部之间oa也能互通 3、分部之间不能互通财务 主要用到bgp自定义团体属性、一级二级RR配置、bgp正则表达式匹配规则 R1 router id 1.1.1.1 //配全局地址池&#xff0c;又可以给ospf用也可以给bgp用 interface GigabitEthernet0/0/0 …

延迟加载:提升性能的隐形利器

引言 想象一下&#xff0c;你正在玩一款大型电子游戏。如果游戏在启动的时候就加载了所有的关卡、角色和道具&#xff0c;那玩家可能需要等待很长时间才能开始游戏&#xff0c;而且大部分内容可能在游戏的初期都不会被用到。显然&#xff0c;这样的做法既低效又耗时。 而延迟加…

位移贴图还原电影3D角色

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 位移贴图&#xff08;Displacement Map&#xff09;在电影制作中是一…

OpenCV图像处理——C++实现亚像素尺寸标定板边缘轮廓提取

前言 标定模板&#xff08;Calibration Target&#xff09;在机器视觉、图像测量、摄影测量以及三维重建等应用中起着重要的作用。它被用于校正相机的畸变&#xff0c;确定物理尺寸和像素之间的换算关系&#xff0c;并建立相机成像的几何模型。通过使用相机拍摄带有固定间距图…

进程和计划任务-------后续(二)

一、进程管理 1.进程启动---------- 前台启动与后台启动 进程需要手动启动 前台启动&#xff08;运行&#xff09;&#xff1a;通过终端启动&#xff0c;且启动后一直占据终端&#xff08;影响当先终端的操作&#xff09; 后台启动&#xff1a;可通过终端启动&#xff0c;但启…

Unity添加所有场景到BuildSettings

Unity添加所有场景到BuildSettings using UnityEngine; using UnityEditor; using System.Collections.Generic; using System.IO; public class Tools : Editor {[MenuItem("Tools/添加所有场景到BuildSettings")]static void CheckSceneSetting(){List<string&…

java基于ssm的线上选课系统的设计与实现论文

摘 要 在如今社会上&#xff0c;关于信息上面的处理&#xff0c;没有任何一个企业或者个人会忽视&#xff0c;如何让信息急速传递&#xff0c;并且归档储存查询&#xff0c;采用之前的纸张记录模式已经不符合当前使用要求了。所以&#xff0c;对学生选课信息管理的提升&#x…

【AI视野·今日Robot 机器人论文速览 第六十八期】Tue, 2 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Tue, 2 Jan 2024 Totally 12 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Edge Computing based Human-Robot Cognitive Fusion: A Medical Case Study in the Autism Spectrum Disorder Therapy Author…

【华为OD真题 Python】查找一个有向网络的头节点和尾节点

文章目录 题目描述输入输出示例1输入输出示例2输入输出备注实现代码题目描述 给定一个有向图,图中可能包含有环,图使用二维矩阵表示,每一行的第一列表示起始节点,第二列表示终止节点,如[0, 1]表示从0到1的路径。每个节点用正整数表示。求这个数据的首节点与尾节点,题目给…

java基于ssm框架的博客系统的开发论文

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…