java数据结构与算法刷题-----LeetCode160:相交链表

LeetCode刷题攻略 应届生面试算法就考个数组 链表 二叉树 矩阵 数组变着法子考你排序 查询 指针 位运算 链表变着法子考你指针 最多再考个哈希 二叉树变着法子考用递归和栈前中后遍历 最多加上回溯 矩阵的话就是知道起点的路径查询和不知道起点的路径查询 掌握了这些 面大厂就比较轻松了 其实和学历技术关系也不大 大部分人先死到想都不敢想上了。 据了解,LeetCode 是一个非常棒的 OJ(Online Judge)平台,收集了许多公司的面试题目。相对其他 OJ 平台而言,有着下面的几个优点: 题目全部来自业内大公司的真. 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846
  1. 思路分析
  1. 思路一:双指针,代码少,时间复杂度(m+n)
  1. 两个指针先指向链表头,然后依次向后移动,当短的链表到结尾,就让这个指针回到开头,另一个不动
  2. 一直这样循环,直到两个指针相遇,就找到了交点。
  1. 思路二:时间复杂度(m+n),空间复杂度O(1)。这道题最大的麻烦就是两个链表长度不一样。根据链表长度差,想象把长的链表砍掉一部分,和短的链表长度一样,然后依次比较就可以了。时间复杂度O(m+n),空间复杂度O(1).
  1. 双指针遍历链表,当其中一个链表遍历完,还剩一个链表时,让剩下的链表head后移,遍历完成后,两个head指向的链表剩余元素长度相同
  2. 然后依次比较两个链表剩下元素的结点,如果一样就找到了交点,否则没找着。
  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) {
        //1.双指针,巧用链表的长度差
        //当其中一个指针,到达末尾,就返回头部
        //知道两个指针相遇,说明找到合并结点
        //如果最终两个指针都为null,就说明没有相交结点
        // if(headB==null||headA==null)return null;

        // ListNode pA = headA,pB = headB;
        // while(pA!=pB){
        //     pA=(pA==null?headB:pA.next);
        //     pB=(pB==null?headA:pB.next);
        // }
        // return pA;
        //2.根据两个链表的长度差,也就是砍掉长链表超出短链表的部分。然后依次进行比较
        //然后依次进行遍历
        if(headA==null || headB == null) return null;
        //双指针
        ListNode pointerA = headA;
        ListNode pointerB = headB;
        //获取两个链表的长度差
        //两个指针都为null,说明遍历完了
        //如果发现其中一个遍历完了,另一个还没遍历完,那么就是两个链表的长度差开始
        //让长度更长的链表指针向后移动
        while(pointerA != null || pointerB != null){
            if(pointerA == null){
                headB = headB.next;
                pointerB = pointerB.next;
            }else if(pointerB == null){
                headA = headA.next;
                pointerA = pointerA.next;
            }else{
                pointerB = pointerB.next;
                pointerA = pointerA.next;
            }
        }
        //此时headA指向剩下的结点和headB指向链表剩下的结点长度相同
        while(headA != null){
            if(headA == headB) return headA;
            headB = headB.next;
            headA = headA.next;
        }
        return null;
    }
}

刷题一定要坚持,总结套路,不单单要把题做出来,要举一反三,也要参考别人的思路,学习别人解题的优点,找出你觉得可以优化的点。

  1. 单链表解题思路:双指针、快慢指针、反转链表、预先指针
  1. 双指针:对于单链表而言,可以方便的让我们遍历结点,并做一些额外的事
  2. 快慢指针:常用于找链表中点,找循环链表的循环点,一般快指针每次移动两个结点,慢指针每次移动一个结点。
  3. 反转链表:通常有些题,将链表反转后会更好做,一般选用三指针迭代法,递归的空间复杂度有点高
  4. 预先指针:常用于找结点,比如找倒数第3个结点,那么定义两个指针,第一个指针先移动3个结点,然后两个指针一起遍历,当第一个指针遍历完成,第二个指针指向的结点就是要找的结点
  1. 数组解题思路:双指针、三指针,下标标记
  1. 双指针:多用于减少时间复杂度,快速遍历数组
  2. 三指针:多用于二分查找,分为中间指针,左和右指针
  3. 下标标记:常用于在数组范围内找东西,而不想使用额外的空间的情况,比如找数组长度为n,元素取值范围为[1,n]的数组中没有出现的数字,遍历每个元素,然后将对应下标位置的元素变为负数或者超出[1,n]范围的正数,最后没有发生变化的元素,就是缺少的值。
LeetCode160. 相交链表(Java) 阅读详情

相关推荐

华大HC32F460 TCP Client 实验

华大HC32F460 TCP Client 实验

ZhuoWuKeJi的博客 649

leetcode 160: Intersection of Two Linked Lists

Intersection of Two Linked Lists Total Accepted: 8676 Total Submissions: 32571 Write a program to find the node at which the intersection of two singly linked lists begins. For example, the

西施豆腐渣 4056

对冲策略与马丁结合ea的编程实践(五)核心是把两个品种合成一个新品种

在外汇、数字货币、期货交易甚至赌博中,马丁策略、网格策略是最常用的策略,也是最容易被理解的策略,但是如何克服单边行情、极端行情,是使用马丁策略最为头疼的事情,如加大间距、加大资金量,只能缓解,并不能根本解决这样的情况,所以使用时大部分时候都心里没底。 有没有一种正确的思路,让行情控制在震荡范围以内呢,这是今天我要向大家分享的一个思路,那就是对冲。大家看下图: 大家可以看到欧美(EURUSD)和镑美(GBPUSD),这两个品种,大部分时候走势是一致的,那么我们有没有可能把他们两个品种进行一下合成,比如买0.

omidsky的博客 3742

【LeetCode-面试算法经典-Java实现】【160-Intersection of Two Linked Lists(单链表的交集)】

【160-Intersection of Two Linked Lists(单链表的交集)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Write a program to find the node at which the intersection of two singly linked lists begins.   For example, the fol

https://github.com/Wang-Jun-Chao 5539

麒麟系统grub被锁怎么办?双密码遗忘救援指南(实测V10 SP3版本)

本文详细介绍了麒麟系统V10 SP3版本在GRUB和root密码双遗忘情况下的救援指南。通过ISO镜像进入救援模式,结合单用户模式操作,实现密码重置与系统权限恢复,特别适用于等保合规环境。

389

Kali Linux下John the Ripper实战:从识别yescrypt哈希到破解zip压缩包(保姆级避坑指南)

本文详细介绍了在Kali Linux中使用John the Ripper工具从识别yescrypt哈希到破解zip压缩包的全过程。针对常见的'No password hashes loaded'报错,提供了两种解决方案,并扩展讲解了哈希识别、zip文件破解及性能优化技巧,是安全测试人员的实用指南。

weixin_29323365的博客 237

LeetCode160.相交链表(Java实现)

链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/ 思路: 1.链表判空 2.设置pa从headA开始,设置pb从headB开始 3.pa,pb同时向后移动,直到两者有一个为空则结束,表示无交点 4.在3循环中,如果出现pa相遇pb,则此处为交点 5.pa和pb后移一位 6.如果pa和pb均换...

Teacher_HENG 611

【OpenClaw 故障排查完全指南】

OpenClaw 故障排查指南摘要 本指南针对OpenClaw 2026.2.26版本常见问题提供解决方案,适用于Windows/Linux/macOS平台。 核心问题及修复方案: 飞书插件连接失败:删除冲突插件或重装OpenClaw Ollama认证错误:设置环境变量OLLAMA_API_KEY="ollama-local" 配置警告:可安全忽略的安全扫描提示 端口占用:查找并终止占用18789端口的进程 插件重复加载:清理重复插件目录 快速修复: 提供一键修复PowerShell脚本

weixin_37572294的博客 1万+

(Java)leetcode-160 Intersection of Two Linked Lists

题目 【寻找两条单链表的交叉点】 Write a program to find the node at which the intersection of two singly linked lists begins. For example, the following two linked lists: begin to intersect at node c1. Example 1: ...

不思量 288

使用Microsoft Print to PDF进行编程:创建PDF文件的简单方法

Microsoft Print to PDF是一种内置于Windows操作系统中的功能,它允许我们通过打印操作将任何可打印的内容保存为PDF文件。然后,我们使用Microsoft Print to PDF打印机进行打印操作,并将输出文件保存为指定的PDF文件。使用Microsoft Print to PDF功能是一种方便且简单的方法来创建PDF文件,无论是在个人使用还是在企业开发中,它都可以提供良好的支持和灵活性。请注意,如果你使用的是其他编程语言,你可以根据相应的打印机接口或库来实现类似的功能。

TechSavant的博客 1636

基于STM32设计的心率脉搏测量仪(项目资料ID:9)

本设计基于STM32F103单片机开发了一款便携式心率脉搏测量仪,通过光电传感器采集脉搏信号,经放大(约1200倍)、滤波(低通及四阶低通滤波)、比较及偏置电压调理后,由STM32进行ADC采样与数据处理。硬件采用Altium Designer设计,包含信号调理电路(限定心率范围43.4-800次/分钟)及电源管理模块;软件基于STM32CubeMX开发,利用队列存储和时间间隔平均算法优化精度,实现多终端显示(OLED实时心率/动画、MATLAB波形分析、蓝牙传输至手机)。系统支持自动启停(检测脉搏启

以培养嵌入式工程师为己任 1万+

java判断是否是相交链表,leetcode160题

java判断是否是相交链表,leetcode160题 LeetCode160题,判断链表是否是相交链表,给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null ,如下: 这里我们提供三种思路: 1、连接两个链表 分析 这里的相连不是物理意义上相连,我们使用一个指针p1指向A链表的头结点,使用指针p2指向B链表的头结点,A链表遍历完后遍历B链表,B链表遍历完后遍历A链表,直到两个指针相遇为止: A: 4

qq_54650406的博客 735

PD详解 扩展消息——Source_Capabilities_Extended Message

PD的协议层分为控制消息,数据消息还有扩展消息,今天大师匈讲一下扩展消息中的source_cap_extended。这个消息在扩展消息中算是比较关键的东西。 扩展消息中的source_cap_extended 大师匈先上图,然后逐一解释; 上面的图表说了source_cap_ext中包含了哪些内容。 我们注意到在source_cap扩展消息中是以字节为单位的,并不是像source_cap中以一个object为单位,当然有注意到PD标准spec中说明的扩展消息的话,那里有说明,在header之后的字节

大师匈的博客 3521

刷完 900 多道算法题的首次总结:LeetCode 应该怎么刷?

LeetCode 算法题应该怎么刷?算法题学习路线?怎么组队刷题?有没有算法刷题群? 你是怎么入门 LeetCode 的?刷完 1000 道算法题是什么体验?大家都是怎么刷题的? 新手小白开始刷算法题应该怎么刷,注意什么?刷 LeetCode 总是觉得太难怎么办? 刷算法题有没有书籍推荐?该按照什么顺序刷算法题?LeetCode 怎么看别人的题解?有哪些好的算法题博主推荐?

负雪明烛 13万+

jre9下载 jdk9

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

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

算法刷题路线总结与相关资料分享

算法刷题路线总结,算法题刷题步骤介绍,数据结构与算法相关资料分享~

小新要变强的博客 8491

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

力扣160 相交链表 java实现

本文讨论了如何找出两个单链表的相交节点。题目要求在不改变链表结构的情况下,返回相交起始节点或null。提供了两种解法:1)传统方法先计算链表长度差,对齐后同时遍历;2)优化方法使用双指针交替遍历,当两指针走过的路径长度相等时相遇。两种方法都能在O(m+n)时间内解决问题,第二种方法仅需O(1)额外空间。代码示例展示了两种实现方式,其中优化解法通过指针交换遍历路径,巧妙避免了长度计算,更简洁高效。

m0_58648798的博客 2427

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【leetcode刷题】17.相交链表——Java&python版

美团的面试题哦

公号:一条coding 1万+

【LeetCode】160. 相交链表

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

qq_53133787的博客 1928

力扣最热一百题——相交链表

相交链表之循序渐进三种解决方法,最后一种方法实在巧妙

WenJGo的博客 2058

【LeetCode】题记日记 160.相交链表 Intersection of Two Linked Lists

【LeetCode】题记日记 160.相交链表 Intersection of Two Linked Lists

qq_21565101的博客 2058

【LeetCode系列】160. 相交链表

本篇文章将介绍关于数据结构之链表的OJ题,来自力扣:160. 相交链表 题解,展示代码语言暂时为:Java语言。(后续会更新C++代码)

未见花闻的博客 968

LeetCode Java面试刷题笔记汇总

LeetCode Java刷题笔记汇总,按照类型刷题效率更高。

终生学习践行者 2948

【算法】刷题路线(系统+全面)

本系列基于当前各大公司对大公司的考察情况,给大家规划一条可行的算法刷题路线,大概会规划 200 道自认为有用的题,并且争取让初学者,能够刷起来更加丝滑,而且每个阶段都会进行相对应的说明。当然,无论是面试还是笔试,你也完全可以按照这个路线来,应付大公司算法面试是够的了。

wufaqidong1的博客 7954

LeetCode热题100——相交链表

本文是LeetCode热题100——相交链表一题的题解,同时也是LeetCode热题100 学习心得013篇

qq_73626259的博客 1899

【LeetCode: 160. 相交链表 + 链表】

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

Coder_ljw的博客 1174

关于leetcode刷题详细介绍

  虽然刷题一直饱受诟病,不过不可否认刷题确实能锻炼我们的编程能力,相信每个认真刷题的人都会有体会。现在提供在线编程评测的平台有很多,比较有名的有 hihocoder,LintCode,以及这里我们关注的 LeetCode。 LeetCode收录了许多互联网公司的算法题目,被称为刷题神器,我虽然早有耳闻,不过却一直没有上面玩过。   据了解,LeetCode 是一个非常棒的 OJ(Online J...

智者之家 9万+
上一篇: java数据结构与算法刷题-----LeetCode142:环形链表 II
下一篇: java数据结构与算法刷题-----LeetCode206:反转链表
ydenergy_殷志鹏
博客等级 码龄7年 5887粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值