【简单】160. 相交链表

力扣--160.相交链表(简单题) 力扣--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 阅读详情

【题目】
编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:
在这里插入图片描述
在节点 c1 开始相交。
来源:leetcode
链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/
【示例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
【示例2】
在这里插入图片描述
输入:intersectVal = 2, listA = [0,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1
输出:Reference of the node with value = 2
【提示】
如果两个链表没有交点,返回 null
在返回结果后,两个链表仍须保持原有的结构
可假定整个链表结构中没有循环
【代码】

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    int callen(ListNode* listnode){
        int cnt=0;
        while(listnode){
            listnode=listnode->next;
            cnt++;
        }
        return cnt;
    }
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        ListNode *shortlist=headA,*longlist=headB,*listnode;
        if(!headA||!headB)
            return NULL;
        int lenA=callen(shortlist),lenB=callen(longlist);
        int diff=lenB-lenA;
        if(lenA>lenB){
            swap(shortlist,longlist);
            diff=abs(diff);
        }
        while(diff--){
            longlist=longlist->next;
        }
        while(shortlist){
            if(shortlist==longlist&&shortlist->next==longlist->next)
                break;
            shortlist=shortlist->next;
            longlist=longlist->next;
        }
        return shortlist;
    }
};
【简单】力扣算法题解析LeetCode160:相交链表 本文介绍了一种高效寻找两个无环单链表相交节点的方法,采用双指针遍历算法。核心思想是通过让两个指针分别遍历两个链表并在到达末尾时切换到对方链表头部,最终在相交节点相遇或同时到达链表末尾(表示不相交)。该方法时间复杂度为O(m+n),空间复杂度为O(1)。文章提供了Java实现代码,并通过示例图解说明了算法的正确性和边界条件处理。 阅读详情

相关推荐

Python《打砖块》小游戏

Python《打砖块》小游戏!

PanDaoxi 1276

160. 相交链表 JavaScript实现

160. 相交链表 160.相交链表 这一题和141.环形链表解法相同 一、哈希表 1、思想 比较节点相同,不仅仅是只比较里面的val值。往哈希表里面存的是节点而不是节点值。所以才会导致示例1的结果。故即便是值相等,也不代表节点相等。是否相等只能通过代码计算知道。 2、代码实现 var getIntersectionNode = function(headA, headB) { // 使用一个哈希表去存储链表A的所有节点 var hash = new Set(); //

weixin_43466639的博客 899

ORCAD原理图关联封装时出现ERROR(ORCIS-6245)、ERROR(ORCIS-6013)问题

1、当你进行如下操作时: 系统先是提示你出现ERROR(ORCIS-6245)然后再确定后再出现ERROR(ORCIS-6013)问题 是由于你的数据库的路径不对。 具体操作方法如下:1、先找到你的CAPTURE.INI文件。 2、用记事本打开CAPTURE.INI。找到下图路径 3、在你的Orcad capture CIS原理图软件中点击 Options------>CIS con...

weixin_42304393的博客 2万+

LeetCode 160.相交链表

LeetCode 160.相交链表

m0_56443096的博客 2202

保姆级教程:在S32K312上配置C40驱动,实现Flash读写(基于RTD 4.4.2)

本文详细介绍了在S32K312微控制器上配置C40驱动实现Flash读写的全流程,基于RTD 4.4.2库。内容涵盖环境搭建、外设配置、Flash操作实战代码及高级应用场景,特别针对LLD驱动和FLS存储操作中的常见问题提供了解决方案,帮助开发者快速掌握嵌入式Flash存储技术。

weixin_28684757的博客 260

Marin说PCB之LPDDR5的布线注意事项--01

以上就是本期所有内容了,有些是通用的LPDDR5的设计准则,有的是针对单板的设计规则,严格意义说是没有哪一种规则是完全适用的LPDDR5的 通用规则的,不同的单板可能板厚,板材,层数,SOC以及DDR的型号都是不同的,一般的做法就是严格按照SOC手册上的LPDDR5的要求加上仿真同事给的建议修改优化就好了,我们下期文章不见不散。我们知道想要做好一个LPDDR颗粒,需要考虑的是因素有很多例如,电源完整性,信号完整性,层叠的设计,布局的摆放,布线的合理规划,去耦电容的摆放等等。

weixin_45223454的博客 3164

160. 相交链表

题目: 思路: ①若两条链表有交点的话,交点及以后的链表段必然相等(不考虑X型这样的相交),设链表A长度为a+m, 链表B长度为b+m ②此时要做的是就是消除前半段的长度差,所以当A/B链表的指针指向自己的尾部时,使其开始遍历B/A(对方的链表),相交且不为null时即为起始节点,若相交但为null时则没有交点 代码: /** * Definition for singly-linked list. * public class ListNode { * int val; * Li

weixin_40578464的博客 214

kemeas算法继续优化——elkan kmeas算法

题记:又是凌晨3点的夜 elkan kmeans算法 在我的上一篇博客《kmeans算法性能改进_kmeans++算法+kmeans++优化算法+距离计算优化》中,在一般kmeans算法的基础上,添加了对于初始条件和距离计算更上的一些优化技巧。这篇博客聊一聊elkan算法,其实也是对于kmeans运行速度的优化算法。主要作用与kmeans的距离计算过程。 原理 假如我们已经知道任意两个样本之间的距离,再假设我们已经知道了样本1与聚类中心1之间的距离,根据三角性两边之和大于第三边,c+d>a,所以如果

铁血军的小博客 7066

LeetCode: 160.相交链表(JavaScript)

编写一个程序,找到两个单链表相交的起始节点。 例如,下面的两个链表: A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3 在节点 c1 开始相交。 注意: 如果两个链表没有交点,返回 null....

romeo12334的博客 681

基于PCL的电力线点云提取与分割实现

本文基于PCL库实现电力线点云提取与分割,包含6个核心处理阶段:文件读取与结果文件夹创建、高程滤波分割候选点云、欧式聚类去噪、电力线分段提取、球形邻域搜索补全点云、最终分割与可视化保存。通过PCA计算点云线性特征(阈值0.91)筛选电力线点,采用欧式聚类(容忍度3.0)去除噪点,并针对不同规模聚类差异化设置球形搜索半径(4.0/6.0)补全点云。最终通过欧式聚类分割并可视化带颜色点云。算法对高程滤波阈值、聚类参数等具有敏感性,需根据点云特性调整优化。

weixin_45196569的博客 195

基于Simulink的固态变压器(SST)多级协同控制

本文基于Simulink平台,详细介绍了固态变压器(SST)多级协同控制的建模与仿真方法。针对SST三级架构(AC-DC、DC-DC、DC-AC)存在的级间耦合问题,提出了纵向解耦与横向联动的协同控制策略。通过搭建10kV/400V级联型SST系统模型,实现了输入电压波动±20%或负载0-100%跳变时直流母线电压波动小于2%的控制目标。文章详细讲解了Simulink建模步骤、控制算法推导及工程部署建议,包括功率前馈控制、虚拟惯性算法等关键技术。仿真结果表明,该协同控制方案能有效抑制负载突变时的电压波动,为

MHD0815的博客 215

相交链表

题目: 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 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 输入解释:相交节点的...

lyl194458的博客 570

Android Framework WMS面试题及参考答案

什么是 WindowManagerService(WMS)?它的作用是什么? WindowManagerService(WMS)是 Android 系统中非常重要的一个系统服务。它运行在系统进程(system_server 进程)中。 从本质上来说,WMS 是 Android 窗口管理系统的核心。它负责管理系统中的所有窗口,包括应用程序窗口、系统窗口(如状态栏、导航栏)等。 它的主要作用有很多。首先是窗口的创建和销毁。当一个应用请求创建一个窗口时,WMS 会协调各个模块完成窗口的创建工

大模型大数据攻城狮的专栏 2165

【简单】160.相交链表

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构。自定义评测:评测系统将根据这些输入创建链式数据结构,并将两个头节点 headA 和 headB 传递给你的程序。如果程序能够正确返回相交节点,那么你的解决方案将被 视作正确答案。

qq_51467258的博客 784

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

160. 相交链表【简单】

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

伍六琪的博客 305

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

leetcode 160 简单难度 相交链表

160. 相交链表 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 c1 开始相交。 输入: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 为

chenyson的博客 138

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【链表】Leetcode 160. 相交链表【简单】

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null。这里有个稍微难以理解的地方,为什么A、B遍历完后相互指向对方头结点,目的是消除链表的长度差,从相同长度开始遍历比较。题目数据 保证 整个链式结构中不存在环。

FLGB 589

Leetcode算法题【简单】160.相交链表

具体步骤请查看每个关键步骤的代码注释。

qq_40800519的博客 248

leetcode 160. 相交链表 简单 链表

题目: 分析:如果两个链表有相交的部分,那么需要让两个链表都走到相交的位置,但问题就出现了,相交前的长度可能是不一样的,怎么可以同时走到相交的位置呢。接着分析发现如果有相交的部分,那么相交后的部分,长度一定是一样的,也就是只有前面未相交的部分长度可能是不一样的,那么想到凑成总长度相同的话问题就得到解决了,怎么凑呢? 可以把前面未相交的部分互相拼接起来,怎么拼? 可以每个链表走到末尾的时候从头去走...

weixin_40208575的博客 114

leetcode力扣160题相交链表简单暴力解法代码

【代码】leetcode力扣160题相交链表简单暴力解法代码。

xiaohao0001abc的博客 198

160. 相交链表(简单)

Leetcode链接:160. 相交链表 题目描述: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后,链表必须 保持其原始结构 。 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB =

二进制杯莫停的博客 164

[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 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为

weixin_50088096的博客 68

Leetcode—160.相交链表【简单】

如果两个链表相交,那么相交点之后的长度是相同的我们需要做的事情是,让两个链表从同距离末尾同等距离的位置开始遍历。这个位置只能是较短链表的头结点位置。为此,我们必须消除两个链表的长度差指针 pA 指向 A 链表,指针 pB 指向 B 链表,依次往后遍历如果 pA 到了末尾,则 pA = headB 继续遍历如果 pB 到了末尾,则 pB = headA 继续遍历比较长的链表指针指向较短链表head时,长度差就消除了如此,只需要将最短链表遍历两次即可找到位置。

Atticus的博客 232

160. 相交链表 - [简单]

每日一练,突破自我,梦想无惧算法!

泰山与水 202

LeetCode [简单] 160. 相交链表

创建两个指针 pointer1​ 和 pointer2,两个指针分别依次遍历headA、headB,区别在于,pointer1从 headA 开始遍历,而 pointer2 从 headB 开始遍历。时间复杂度:O(m+n),其中 m 和 n 分别是链表 headA 和 headB 的结点数。最坏情况下,每个指针遍历两个链表各一次。,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回。在此过程中,如果有相同的结构,必定会同时遍历到。,函数返回结果后,链表必须。空间复杂度:O(1)O。

Theolulu的博客 248
上一篇: 【简单】1413. 逐步求和得到正数的最小值
下一篇: 【简单】面试题 02.07. 链表相交
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值