1.两个链表第一个公共子节点问题

链表经典问题之寻找两个链表的公共子节点 在解题没有思路的时候,有一个办法就是这是一道经典的算法题,剑指Offer52:输入两个链表,找到它们的第一个公共子节点。对于这种题,首先想到的就是,将第一个链表的每一个节点依次与第二个链币的每一个节点进行比较,直到找到第一个相同的节点为止,但是这种方法的,排除!再看,队列在这道题中没有什么用,但是用栈是可以解决问题的。将两个链表同时压到栈里,之后一边同时出栈,一边比较出栈元素是否一致,如果一致就说明存在相交。之后继续出栈,直到找到最后一组出栈元素相等的那个就是初始公共节点。接着来看。 阅读详情

题目描述:
输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。
数据范围: n≤1000
要求:空间复杂度 O(1),时间复杂度 O(n)

示例 1:

输入:两个相交链表的两个头结点指针
输出:相交链表交点处结点指针

解题思路1:使用HashMap。先遍历A链表,存储到HashMap中,然后遍历B链表,找出交

    public static ListNode findFirstCommonNodeByMap(ListNode pHead1, ListNode pHead2) {
        if (pHead1 == null || pHead2 == null) {
            return null;
        }
        ListNode current1 = pHead1;
        ListNode current2 = pHead2;

        HashMap<ListNode, Integer> hashMap = new HashMap<ListNode, Integer>();
        while (current1 != null) {
            hashMap.put(current1, null);
            current1 = current1.next;
        }

        while (current2 != null) {
            if (hashMap.containsKey(current2))
                return current2;
            current2 = current2.next;
        }

        return null;
    }

 

解题思路2:使用集合。比如Set集合,与上面HashMap解法比较相似

解题思路3:使用栈。先入栈,出栈,一直找到最晚出栈的相同节点。

解题思路4:双指针法。

    public static ListNode findFirstCommonNodeByCombine(ListNode pHead1, ListNode pHead2) {
        if (pHead1 == null || pHead2 == null) {
            return null;
        }
        ListNode p1 = pHead1;
        ListNode p2 = pHead2;
        while (p1 != p2) {
            p1 = p1.next;
            p2 = p2.next;
            if (p1 != p2) {
                if (p1 == null) {
                    p1 = pHead2;
                }
                if (p2 == null) {
                    p2 = pHead1;
                }
            }
        }
        return p1;
    }

python解法:差与双指针法,计算两张表的长度,然后长表先走长度之差的距离,然后再一起走,直到找到相同节点。

    def getIntersectionNode4(self, headA, headB):
        s1, s2 = 0, 0
        p, q = headA, headB
        # 计算长度
        while p:
            p = p.next
            s1 += 1
        while q:
            q = q.next
            s2 += 1
        # 长链表先走,但不确定AB谁长,所以有两个循环,但实际上有至少一个循环不会执行
        p, q = headA, headB
        for i in range(s1 - s2):
            p = p.next
        for i in range(s2 - s1):
            q = q.next
        while p and q and p != q:
            p = p.next
            q = q.next
        return p

 

用HFSS复现经典论文:从零搭建带孔缝屏蔽箱体模型(附完整建模步骤与避坑指南) 本文详细介绍了如何使用HFSS电磁仿真软件复现经典论文中的带孔缝屏蔽箱体模型,包括从零搭建模型、设置激励与边界条件、求解优化及结果验证的全过程。特别提供了建模中的布尔运算陷阱、激励设置技巧等实操难点的避坑指南,帮助工程师和学生深入理解电磁屏蔽效能研究。 阅读详情

相关推荐

别再傻傻分不清了!STM32定时器里Prescaler和ClockDivision到底有啥区别?

本文深入解析STM32定时器中Prescaler和ClockDivision的区别与应用场景。Prescaler作为定时器的'心跳调节器',决定计数频率;而ClockDivision则是输入捕获的'抗噪滤镜',有效抑制高频噪声。通过实战案例和示波器实测数据,帮助开发者避免常见配置误区,提升嵌入式系统稳定性。

weixin_29193259的博客 319

[Go版]算法通关村第一关白银——链表经典问题之找出两个链表第一个公共子节点

使用四种方法找出两个链表的第一个公共子节点

trinityleo5的博客 383

AEB(自动紧急制动)

AEB系统对静止物体的误判率受多种因素影响,包括传感器精度、算法复杂性以及环境条件等。通过多传感器融合、算法优化、硬件升级以及环境适应性增强等技术手段,可以有效减少误判问题。美国和欧洲的AEB法规均强调了技术性能和安全性,但具体要求有所不同。美国的NHTSA规定更注重高速和复杂场景下的紧急制动能力,而欧盟的ECE R152法规则更侧重于基础的AEB功能覆盖范围。

百态·数智思维 | 聚焦大数据、量化与未来AI 2550

1.2 链表高频面试题

假设公共子节点一定存在,第一轮遍历,假设La的长度为L1,Lb的长度为L2,则 |L2-L1| 就是两个的差值。这里需要用到两个栈,分别将两个链表的结点入两个栈,然后分别出栈,如果相等就继续出栈,一直找到最晚出栈的那一组。上面三种方法,第一种方法比较常规,第二种方法需要开辟一个O(n)的空间,还要考虑栈与链表的操作等,不中看也不中用。先看一个简单的问题:给你一个链表的头结点 head 和一个整数 val,请你删除链表中所有满足 Node.val == val 的结点,并返回新的头结点。

鹏鹏程序员的博客 604

Mooncake架构:基于KVCache解耦的LLM推理优化方案

在大语言模型推理中,KVCache是Transformer解码过程中用于缓存历史Key/Value向量的核心数据结构,它避免了序列重复计算,但会随上下文长度线性增长,成为显存占用的主要部分。其原理是在自回归生成时,将已计算过的注意力键值对存储下来,供后续Token生成时直接使用,从而提升计算效率。这项技术的核心价值在于,通过高效管理KVCache,可以显著降低长序列推理时的显存压力,提升GPU资源利用率。在实际应用场景中,尤其是在处理长上下文对话、高并发请求时,KVCache的管理策略直接决定了服务的吞吐量

weixin_35753431的博客 532

运放+三极管构建LED恒流驱动电路:原理、设计与调试全解析

在电子工程领域,恒流源是一种能够提供稳定输出电流的电路,其核心原理基于负反馈控制机制。通过将输出电流采样转化为电压信号,并与一个稳定的参考电压进行比较,系统自动调节功率器件的导通状态,从而抵消输入电压波动或负载变化带来的影响,实现电流恒定。这种技术对于驱动LED、激光二极管等电流敏感型器件具有重要价值,能确保亮度、色温的一致性,并延长器件寿命。本文以经典的运放结合三极管方案为例,深入剖析其如何实现精准的电流“钳位”。该方案利用通用运算放大器作为比较器,配合三极管构成调整管,通过采样电阻实时监测电流,形成了一

weixin_42525800的博客 496

算法:两个链表的第一个公共子节点

两个链表的第一个公共子节点 思路:使用两个指针 node1,node2 分别指向两个链表 headA,headB 的头结点,然后同时分别逐结点遍历,当 node1 到达链表 headA 的末尾时,重新定位到链表 headB 的头结点;当 node2 到达链表 headB 的末尾时,重新定位到链表 headA 的头结点。 这样,当它们相遇时,所指向的结点就是第一个公共结点。 其实可以理解为两个链表...

Ricardo_lun的博客 435

免疫治疗新思路:用COMPASS算法挖掘单细胞数据中的代谢靶点(含差异分析技巧)

本文介绍了如何利用COMPASS算法从单细胞转录组数据中系统推断免疫细胞的代谢活性,为肿瘤免疫治疗提供新的靶点发现思路。文章详细阐述了COMPASS结合流平衡分析的核心原理,并提供了从差异分析到可成药性评估的完整转化路径,旨在帮助研究者精准定位代谢弱点,开发新型免疫代谢疗法。

weixin_29275257的博客 367

链表经典问题之两个链表的第一个公共子节点

链表经典问题之两个链表的第一个公共子节点

ArmanAbdu的博客 142

详细解读文字识别工具———Tesseract-OCR

   在尝试破解12306验证码的时候,提前了解了一下应对各种验证码的解决方案,这里主要是学习到了面对文字图片验证码,例如亚马逊、豆瓣等平台的登录时会遇到的情况,效果还不错。 一、工具介绍 ​    Tesseract-OCR 是一款由HP实验室开发由Google维护的开源OCR(Optical Character Recognition...

别看我只是一只羊 2万+

ObjectMapper解析JSON数据

的时候捕获的数据,往往需要结合文档所定义的类进行转换,也就是。库中的一个关键类,它的作用是将。对象之间进行相互转换。

weixin_57128596的博客 976

链表之第一个公共子节点

∴ length(a + b + c) = length(c + b + a) 且 无a、b、c无交集。使用四种方法,Hash、栈、链表拼接、差和四种方法解决寻找两链表第一个公共子节点问题。使用hash结构,如java中的HashSet,先将第一个链表的节点。输入两个链表,已知两个链表在相交处会形成单链表,求相交点的值;,弹出的数据作比较,若相等则用临时变量保存,然后继续弹栈,直到。使用栈来找出公共子节点,首先得先创建。,所以会从最后一个节点开始比较,此时,两个栈。,节约空间,但要注意的是,需要在。

weixin_53447671的博客 124

在 SAP GUI Editor 中使用 OpenAI 自动生成 ABAP 代码 —— 技术实践与思考

在传统 SAP GUI Editor 场景下融入OpenAI开发者表达意图,模型负责实现。随着的持续演进,以及Joule等官方 Copilot 的加入,未来 ABAP 开发形态必将更加专注业务逻辑与架构设计,而把样板式编码交给 AI 自动完成。现在就动手试试,让你的下一段 ABAP 由 AI 来书写吧!

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 709

两个链表第一个公共子节点

这是一道经典的链表问题,剑指offer52 先看一下题目:输入两个链表,找出它们的第一个公共节点。

qq_53697397的博客 455

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

算法通关村第一关——链表第一个公共子节点

链表公共子节点

jiangchenyang_的博客 502

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

算法通关村第一关——链表经典问题之寻找公共子节点笔记

本文主要讲述了如何去寻找两个链表的公共子节点的多种方法,并提供了对应的代码

moqi997752的博客 1108

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

五种方法解决两个链表第一个公共子节点

这是一道经典的链表问题先看一下题目。 输入两个链表,找出它们的第一个公共节点。 例如下面的两个链表: 两个链表的头结点都是已知的,相交之后成为一个单链表,但是相交的位置未知,并且相交之前的结点数也是未知的,请设计算法找到两个链表的合并点。 1.没有思路时该怎么解题 这种问题该怎么入手呢?如果一时想不到该怎么办呢?其实这时候我们可以将常用数据结构和常用算法都想一遍,看看哪些能解决问题。 常用的数据结构有数组、链表、队、栈、Hash、集合、树、堆。常用的算法思想有查找、排序、双指针、递归、迭.

纵横千里 捭阖四方 的专栏 778

算法通关村第一关-----链表经典问题之解决两个链表第一个公共子节点问题

iterB) {

今天不coding的博客 590

算法通关村第一关——链表经典问题之两个链表第一个公共子节点笔记

使用 5 种方法来解答《剑指 Offer 52. 两个链表的第一个公共节点》问题,并给出解答方法对应的示例图和代码实现。

cn_ljr的博客 858

c语言求两个链表的公共结点,两个链表的第一个公共子节点

题目:输入两个链表,找出它们的第一个公共子节点。直观做法:在第一个链表上顺序遍历每个节点,每遍历到一个节点的时候,在第二个链表上顺序遍历每个节点。如果在第二个链表上有一个节点和第一个链表上的节点一样,说明两个链表在这个节点上重合,于是就找到了它们的公共节点。如果第一个链表的长度为 m, 第二个链表的长度为 n,显然,该方法的时间复杂度是 O(mn)。分析有公共节点的两个链表的特点:如果两个单向链表...

weixin_35927509的博客 763

链表6:两个链表的第一个公共子节点

LeetCode原题里好像没有原题,但是在剑指offer里和其他高频面试题里有,笔者曾经面京东时也手写过。题目的表述有多种方式,意思都是一样的: 输入两个链表,找出它们的第一个公共节点。 例如下面的两个链表: 两个链表的头结点都是已知的,相交之后成为一个单链表,但是相交的位置未知,并且相交之前的结点数也是未知的,请设计算法找到两个链表的合并点。 1.没有思路时该怎么解题 这种问题该怎么入手呢?如果一时想不到该怎么办呢?其实这时候我们可以将常用数据结构和常用算法都想一遍,看看哪些能解决问

纵横千里 捭阖四方 的专栏 523

《算法通关村第一关——链表经典问题之两个链表第一个公共子节点笔记》

一致则说明存在相交,然后。的,相交之后成为一个。都想一遍,看看哪些能。

weixin_60791634的博客 945

算法通关村第一关——链表经典问题之第一个公共子节点笔记

解决链表公共子节点问题的五种方法

shuaishuai__的博客 2420

52.两个链表的第一个公共子节点

题目:输入两个链表,找出它们的第一个公共结点 基本思路: 解法一:直接法在第一个链表上顺序遍历每个结点,每遍历到一个结点的时候,在第二个链表上顺序遍历每个结点。如果在第二个链表上有一个结点和第一个链表上的结点一样,说明两个链表在这个结点上重合,于是就找到了它们的公共结点。如果第一个链表的长度为m,第二个链表的长度为n,显然该方法的时间复杂度是O(mn) 。 解法二:使用栈所以两个有公共结...

weidiezeng的博客 330

算法通关村第一关——链表经典问题之两个链表第一个公共子节点

剑指 Offer 52.这道题,而且涉及到几种解链表题目常用的方法。需要找到两个链表的 第一个公共节点比如那么这两个链表的 第一个公共节点就是5->9。

weixin_59371617的博客 448

《算法通关村第一关——链表经典问题之两个链表的第一个公共子节点问题笔记》

输入两个链表,找出他们的第一个公共节点。例如下面的两个链表两个链表的头节点都是已知的,相交之后成为一个单链表,但是相交的位置未知,并且相交之前的节点数也是未知,请设计算法找到两个链表的合并点。

Go_ahead_forever的博客 889
上一篇: 链表基础知识
下一篇: 2.判断链表是否为回文序列
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值