Leetcode 02.07 链表相交(链表)
Leetcode 02.07 链表相交(链表)
- 解法1 尾部对齐
- 解法2:太厉害了,数学归纳推导的方法

很巧妙,这就是将链表的尾端对齐后再一起遍历,这样能满足题目的要求。因为相交之后两个链表到结束的所有节点都一样了,数目也一样。
解法1 尾部对齐
时间复杂度O(M+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) {ListNode curA = headA;ListNode curB = headB;int Alen = 0, Blen = 0;if(headA == null || headB == null) return null;// 求两个链表的长度while(curA != null){curA = curA.next;Alen ++;}while(curB != null){curB = curB.next;Blen ++;}curB = headB;curA = headA;// 【长短尾部对齐】让短的那个的头结点还是其之前的头结点,长的的cur右移(长-短)if(Alen > Blen){ for(int i = 0; i < (Alen - Blen); i++){curA = curA.next;}} else if(Alen < Blen){ for(int i = 0; i < (Blen - Alen); i++){curB = curB.next;}}// 接下来curA 和 curB 一起向后移动寻找一样的节点while(curA != null){if(curA == curB){return curA;}curA = curA.next;curB = curB.next;}return null;}
}
解法2:太厉害了,数学归纳推导的方法
在指针 pA 移动了 a+c+b 次、指针 pB 移动了 b+c+a次之后,两个指针会同时到达两个链表相交的节点,该节点也是两个指针第一次同时指向的节点,此时返回相交的节点。
如果两个链表不相交也是一样的道理,当PA指针和PB指针同时遍历m+n后,会同时指向null。
时间复杂度O(1)
空间复杂度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 PA = headA;ListNode PB = headB;// 同时遍历PA,PB,当PA到null则再指向headB,当PB到null则再指向headA// 遇到PA = PB 则返回该值// 最后同时指向null则返回nullwhile(PA != PB){if(PA == null) {PA = headB;continue;}if(PB == null) {PB = headA;continue;}PA = PA.next;PB = PB.next;}if(PA == null) return null;else return PA; }
}
相关文章:

Leetcode 02.07 链表相交(链表)
Leetcode 02.07 链表相交(链表) 解法1 尾部对齐解法2:太厉害了,数学归纳推导的方法 很巧妙,这就是将链表的尾端对齐后再一起遍历,这样能满足题目的要求。因为相交之后两个链表到结束的所有节点都一样了&…...

Bootstrap的媒体对象组件(图文展示组件),挺有用的一个组件。
Bootstrap的.media类是用于创建媒体对象的,媒体对象通常用于展示图像(图片)和文本内容的组合,这种布局在展示新闻文章、博客帖子等方面非常常见。.media类使得创建这样的媒体对象非常简单,通常包含一个图像和相关的文本…...

Day2力扣打卡
打卡记录 无限数组的最短子数组(滑动窗口) 链接 思路:先求单个数组的总和,再对两个重复数组所组成的新数组上使用 不定长的滑动窗口 来求得满足目标的最小长度。 class Solution { public:int minSizeSubarray(vector<int>…...

项目经理每天,每周,每月的工作清单
很多不懂项目管理的伙伴问,项目经理每天每周每个月的工作是什么呢? 仿佛他们什么都管,但是又没有具体的产出,但是每天看他们比谁都忙,其实很简单,项目中的每个环节负责具体的事情,但是每个环节…...

Java —— 运算符
目录 1. 什么是运算符 2. 算术运算符 2.1 基本四则运算符: 加减乘除模( - * / %) 2.2 增量运算符 - * %与 自增/自减运算符 -- 3. 关系运算符 4. 逻辑运算符 4.1 逻辑与 && 4.2 逻辑或|| 4.3 逻辑非 ! 4.4 短路求值 5. 位运算符 5.1 按位与 & 5.2 按位或 5.3 按位…...

【C++ 中的友元函数:解密其神秘面纱】
友元函数,作为C中一个重要但常常被误解的概念,经常让初学者感到困惑。本文将带您逐步了解友元函数的含义、用途以及如何正确使用它们。 什么是友元函数? 在C中,友元函数是一种特殊的函数,它允许某个类或类的成员函数…...

YOLOv8涨点技巧:手把手教程,注意力机制如何在不同数据集上实现涨点的工作,内涵多种网络改进方法
💡💡💡本文独家改进:手把手教程,解决注意力机制引入到YOLOv8在自己数据集不涨点的问题点,本文提供五种改进方法来解决此问题; ContextAggregation | 亲测在血细胞检测项目中涨点,…...

牛客:FZ12 牛牛的顺时针遍历
FZ12 牛牛的顺时针遍历 文章目录 FZ12 牛牛的顺时针遍历题目描述题解思路题解代码 题目描述 题解思路 通过一个变量来记录当前方向,遍历矩阵,每次遍历一条边,将该边的信息加入到结果中 题解代码 func spiralOrder(matrix [][]int) []int {…...

函数防抖(javaScript)
防抖说明 (1)防抖的目的: 当多次执行某一个动作的时候,限制函数调用的次数,节约资源。 (2)防抖的概念: 函数防抖(debounce):就是指触发事件后&…...

日常学习记录随笔-redis实战
redis的持久化(rdb,aof,混合持久化) redis的主从架构以及redis的哨兵架构 redis的clusterredis 是要做持久化的,一般用redis会把数据放到缓存中为了提升系统的性能 如果redis没有持久化,重启的化数据就会丢失,所有的请…...

MySQL事务MVCC详解
一、概述 MVCC (MultiVersion Concurrency Control) 叫做多版本并发控制机制。主要是通过数据多版本来实现读-写分离,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读,从而提高数据库并发性能。 MVCC只在已提交读(…...

SQL RDBMS 概念
SQL RDBMS 概念 RDBMS是关系数据库管理系统(Relational Database Management System)的缩写。 RDBMS是SQL的基础,也是所有现代数据库系统(如MS SQL Server、IBMDB2、Oracle、MySQL和MicrosoftAccess)的基础。 关系数据库管理系统(Relational Database Management Sy…...

onlyoffice的介绍搭建、集成过程。Windows、Linux
文章目录 什么是onlyoffice功能系统要求安装必备组件 windows搭建资源下载安装数据库onlyoffice安装测试 Linux搭建dockerdocker-compose 项目中用到的技术,做个笔记哈~ 什么是onlyoffice 在本地服务器上安装ONLYOFFICE Docs Community Edition Community Edition…...

37. 解数独
编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) 数独部分空…...

git cherry-pick 合并某次提交
一、无冲突的情况 1、合并其它分支某次提交 切换到主分支,想把其他分支的某次commit修改 合并到主分支上, 可以用 git cherry-pick 命令 比如,其它分支,某次提交的commit Hash 是30e48158badc39801f1ce3cb375a07b872d6f220 &a…...

【面试HOT100】子串普通数组矩阵
系列综述: 💞目的:本系列是个人整理为了秋招面试的,整理期间苛求每个知识点,平衡理解简易度与深入程度。 🥰来源:材料主要源于LeetCodeHot100进行的,每个知识点的修正和深入主要参考…...

XPSpeak软件教程-科学指南针
在做X 射线光电子能谱(XPS)测试时,科学指南针检测平台工作人员在与很多同学沟通中了解到,好多同学仅仅是通过文献或者师兄师姐的推荐对XPS测试有了解,但是对于其软件操作还属于小白阶段,针对此,科学指南针检测平台团队…...

NLP算法面经 | 腾讯 VS 美团
作者 | 曾同学 编辑 | NewBeeNLP 面试锦囊之面经分享系列,持续更新中 后台回复『面试』加入讨论组交流噢 lz从3月初脚因打球扭伤了开始,投递简历,接二连三的面试鞭尸又面试,昨天才终于上岸了,分享经验~ 腾讯PCG看点&…...

【广州华锐互动】塔吊多人安拆VR互动培训系统
塔吊多人安拆VR互动培训系统由广州华锐互动制作,是一种基于VR技术的模拟实训系统,专门用于培训塔吊驾驶员和操作员。 在现实生活中,塔吊操作具有一定的危险性,尤其是在培训过程中容易发生意外。而使用VR互动实训系统,学…...

Linux性能优化--性能工具:特定进程内存
5.0 概述 本章介绍的工具使你能诊断应用程序与内存子系统之间的交互,该子系统由Linux内核和CPU管理。由于内存子系统的不同层次在性能上有数量级的差异,因此,修复应用程序使其有效地使用内存子系统会对程序性能产生巨大的影响。 阅读本章后&…...

MyLife - Docker安装rabbitmq
Docker安装rabbitmq 个人觉得像rabbitmq之类的基础设施在线上环境直接物理机安装使用可能会好些。但是在开发测试环境用docker容器还是比较方便的。这里学习下docker安装rabbitmq使用。 1. rabbitmq 镜像库地址 rabbitmq 镜像库地址:https://hub.docker.com/_/rabbi…...

Leetcode刷题详解——长度最小的子数组
1. 题目链接:209. 长度最小的子数组 2. 题目描述: 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度**。**如果不…...

客流人数管理新趋势:景区客流采集分析系统的功能特点
随着旅游业的蓬勃发展,越来越多的人选择前往景区进行休闲和旅游。然而,人流量的增加也给景区管理带来了一系列的挑战。为了更好地管理和运营景区,景区客流采集分析系统应运而生。 一、案例展示 二、产品卖点 该系统利用先进的人工智能算法和…...

【仙逆】王林极限跑酷,藤厉自食恶果,仙逆战斗获好评,张虎命运被改写
Hello,小伙伴们,我是小郑继续为大家深度解析国漫资讯。 最新一集《仙逆》已经更新,相信很多小伙伴都已经先睹为快,在击杀了白展之后,张虎和王林担心其师傅即墨老人报复,因此躲到看似安全的藤家城,以为那里有…...

想要精通算法和SQL的成长之路 - 前缀和的应用
想要精通算法和SQL的成长之路 - 前缀和的应用 前言一. 区域和检索 - 数组不可变二. 二维区域和检索 - 矩阵不可变2.1 前缀和的计算2.2 用前缀和计算二维区域和 三. 矩形区域不超过 K 的最大数值和 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 区域和检索 - 数组不可变 原…...

如何让大模型自由使用外部知识与工具
本文将分享为什么以及如何使用外部的知识和工具来增强视觉或者语言模型。 全文目录: 1. 背景介绍 OREO-LM: 用知识图谱推理来增强语言模型 REVEAL: 用多个知识库检索来预训练视觉语言模型 AVIS: 让大模型用动态树决策来调用工具 技术交流群 建了技术交流群&a…...

关注用户信息卡片
效果展示 CSS 知识点 box-shadow 属性回顾CSS 变量回顾 实现页面整体布局 <div class"card"><div class"box"><!-- 视频 --><div class"vide_box"><video src"user.mp4" type"video/mp4" aut…...

【Java基础面试十八】、说一说重写与重载的区别
文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:说一说重写与重载的区别…...

Linux文件管理(上)
一、VIM编辑器 1、vi概述 vi(visual editor)编辑器通常被简称为vi,它是Linux和Unix系统上最基本的文本编辑器,类似于Windows 系统下的notepad(记事本)编辑器。 2、vim编辑器 Vim(Vi improved)是vi编辑器…...

docker 复习
文章目录 1. docker 基础1.1 docker 安装配置镜像加速器拉取镜像的仓库: docker 部署Mysql 镜像docker 命令的详细解释docker 常见命令docker 数据卷docker 相关命令总结 2.自定义镜像2.1 dockerfile2.2 try 构建一个Java镜像,并部署2.3 总结: 3. docker…...