【算法题】两个链表的第一个公共结点

算法题5 找出两个链表的第一个公共结点 题目:两个单向链表,找出它们的第一个公共结点。 链表的结点定义为: struct ListNode {       int       m_nKey;       ListNode*   m_pNext; }; 分析:这是一道微软的面试题。微软非常喜欢与链表相关的题目,因此在微软的面试题中,链表出现的概率相当高。 如果两个单向链表有公共的结点,也就是说两个链表从某一结点开始,它们的 阅读详情

题目描述
输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)

分析
先遍历一次两个链表,找到较长的,让该链表指针先走delta步,较短链表从头开始走,最终两指针必然会在第一个公共结点相遇。

代码

public class Solution {
    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
        int len1=getLength(pHead1), len2=getLength(pHead2);
        if(len1==0 || len2==0) return null;
        ListNode work1=pHead1, work2=pHead2;
        if(len1>len2){
            int delta = len1-len2;
            for(int i=0;i<delta;i++) work1=work1.next;
            while(work1!=work2){
                work1=work1.next;
                work2=work2.next;
            }
            return work1;
        }else{
            int delta = len2-len1;
            for(int i=0;i<delta;i++) work2=work2.next;
            while(work1!=work2){
                work1=work1.next;
                work2=work2.next;
            }
            return work1;
        }

    }
    public int getLength(ListNode node){
        if(node==null) return 0;
        ListNode tmp = node;
        int count=0;
        while(tmp!=null){
            count++;
            tmp=tmp.next;
        }
        return count;
    }
}
博图Advanced实战:VB脚本实现HMI画面智能弹出(附完整代码解析) 本文详细介绍了在西门子博图Advanced平台中利用VB脚本实现HMI画面智能弹出的实战方法。通过动态计算坐标、分辨率自适应方案和完整代码解析,帮助工程师解决不同显示环境下的定位难题,提升工业自动化界面的交互体验。 阅读详情

相关推荐

从零开始搭建GD32F103CBT6开发环境:VSCode配置与实战技巧

本文详细介绍了如何从零开始为国产MCU GD32F103CBT6搭建高效的VSCode开发环境。内容涵盖工具链安装、VSCode核心插件配置、工程目录结构规划、关键配置文件编写以及Makefile实战,旨在帮助开发者摆脱传统IDE束缚,利用现代化工具链提升嵌入式开发效率。

weixin_29158413的博客 448

两个链表的第一个公共结点-链表专题

两个链表的第一个公共结点的四种思路!!

m0_56642224的博客 1443

PyMySQLSaver实战:构建高可靠性的LangGraph状态管理

本文详细介绍了如何使用PyMySQLSaver构建高可靠性的LangGraph状态管理系统。通过检查点机制和MySQL持久化技术,开发者可以确保AI应用在崩溃后从最近状态恢复,支持长时间运行任务和多轮交互。文章包含核心架构解析、生产环境部署指南及实战案例,帮助开发者掌握状态管理的核心技术。

weixin_29310605的博客 495

两个链表的第一个公共结点

输入分为是3段,第一段是第一个链表的非公共部分,第二段是第二个链表的非公共部分,第三段是第一个链表和第二个链表的公共部分。当然,如果两个链表的长度相同,那么第一次轮询就可以将公共节点查询出来,所以第一次轮询是很多有必要的。其实该题目只需要抓住一个重点,那就是当找到两个链表公共节点的第一个节点时,节点的指针是相同的,那么该节点的 next 也是相同的,然后,在回到题目的要求,题目要求时间复杂度为 O(n),那么中间的循环就需要深思,即轮询中不能出现暴力查找等情况。时间复杂度大概为O(n+m)

私房菜 1615

【实战】ESP32 + LN298N 实现电动推杆的闭环位置伺服控制

本文详细介绍了如何使用ESP32微控制器和LN298N电机驱动模块,为普通电动推杆增加编码器反馈,实现精准的闭环位置伺服控制。文章从硬件选型与接线讲起,深入解析了编码器四倍频计数原理与位置换算,并重点阐述了PID控制算法的核心思想、代码实现及参数整定方法,旨在帮助读者从零构建一个反应迅速、定位精准的智能执行器系统。

weixin_29195615的博客 318

测试用例经典练习之微信发红包测试用例

微信发红包测试用例

ZCYaiCLX3344的博客 1万+

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

问题描述 输入两个链表,找出它们的第一个公共结点。 含有公共节点的两个链表的结构类似于下图中的链表: 可以看到两个链表中有一个公共节点,其中橙色的节点就是这两个链表的公共节点。   看到这个题目,容易想到的方法是使用蛮力法解决:在第一个链表上顺序遍历每一个节点,每遍历到一个节点,就在第二个链表上顺序遍历每个节点。如果在第二个链表上有一个节点与第一个链表上的节点一样,则说明两个链表在这个...

forever-and-ever的博客 1万+

超详细流式细胞术全流程解析:从样本制备到结果分析全攻略

流式细胞术(Flow Cytometry)是现代生物学和医学研究中不可或缺的高通量分析技术,可实现对细胞表型、功能状态、细胞周期等多维度参数的快速检测。本文将从实验全流程出发,详解样本制备、上机操作、参数设置及结果处理的核心要点,帮助科研人员精准掌握流式实验关键技术。

good_rrrrr的博客 3868

两个链表的第一个公共结点,三种方法~

题目描述:输入两个链表,找出它们的第一个公共结点。这里的公共结点不是指数据域哦,而是指整个结点,所以可知,如果有第一个公共结点,则后面所有结点都一样,呈现的像是Y; 思路分析:三种方法 第一种方法:蛮力法:从链表1开始遍历,遇到一个结点,就遍历链表2的所有结点,找到相同的停止,不推荐,因为时间复杂度太大; 第二种方法:因为是Y形状,所以从后面找,一直找到不相同的结点的为止,因为没有前继指针,

cfy1024的博客 506

利用Arcgis发布wmts服务

使用发布 GIS 服务连接连接到 ArcGIS Server 站点后,可以将各种 GIS 资源(如地图文档、数据库以及服务定义)发布到服务器上。此外,还可以添加、删除、启动和停止服务。使用管理 GIS 服务器连接到 ArcGIS Server 站点后,可以编辑各种服务器属性,例如配置存储位置、集群配置、参与到该站点中的计算机列表以及管理站点的数据存储。通过使用 GIS 服务连接建立连接后,可以查看并使用发布到该站点的服务。但不能编辑服务器或服务属性、发布服务,也不能添加、删除、启动、停止或暂停服务。

ghgfsasxda的博客 2395

[kriging](一)网上下载的kriging克里金的C++程序的初步调试

笔者在网上下载了一份克里金的C++程序,水平有限,正在逐步地调试中。 初步 克里金法现在在许多软件都已经有集成了,据笔者所知: arcgis : 看过有的arcgis培训视频里面简略介绍了里面的插值方法,有克里金。 surfer :笔者用过这个,效果很好。 gocad :听说有 landmark &jason :研究生时候用的专业的石油物探软件,里面有克里金法,万恶的开始。 pykrig...

FOREST优快云 5612

[算法题]两个链表的第一个公共结点

[算法题]两个链表的第一个公共结点

m0_62714628的博客 375

大语言模型原理与工程实践:行业大语言模型的评测:以金融行业大语言模型为例

大语言模型、金融行业、模型评测、自然语言处理、深度学习、Transformer、BERT、GPT 1. 背景介绍 近年来,大语言模型(Large Language Model,LLM)在自然语言处理(Natural Language Processing,NLP)领域取得了突破性的进

AI大模型应用之禅 137

算法题10:两个链表的第一个公共结点

两个链表的公共结点

qq_43535565的博客 79

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Devexpress16.2.6破解工具

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

算法题-两个链表的第一个公共结点

[编程题]两个链表的第一个公共结点 时间限制:1秒 空间限制:32768K 输入两个链表,找出它们的第一个公共结点。 给两个指针,”分别”从头到尾遍历”两个链表“,只要没遇到公共结点就继续遍历,最终两个指针到达 null 或者到达公共结点,返回之. C++ /* struct ListNode { int val; struct ListNode *next...

Ego_Bai的博客 739

老版QQ原生表情gif动态

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

每日算法题 | 剑指offer 链表专题 (10) 两个链表的第一个公共结点

点击上方“Jerry的算法和NLP”,选择“星标”公众号 重磅干货,第一时间送达题目两个链表的第一个公共结点题目要求输入两个链表,找出它们的第一个公共结点。解题思路思路一:...

Jerry的编程之路 235

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

剑指offer算法题:两个链表的第一个公共结点FindFirstCommonNode

输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的) 1.从链表头判断,长链表先走,直至两个链表持平。 public class Solution { public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { ...

Mike的博客 403

算法题练习——JS Node+python题解链表中倒数最后k个结点、两个链表的第一个公共结点

本文为大家用JS Node+python题解链表中倒数最后k个结点、两个链表的第一个公共结点,希望对你有帮助~~

weixin_53919192的博客 323

牛客网高频算法题系列-BM10-两个链表的第一个公共结点

输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空

玉树临风,仙风道骨 200

算法题-简单系列-05-两个链表的第一个公共结点

让N1和N2一起遍历,当N1先走完链表1的尽头(为null)的时候,则从链表2的头节点继续遍历,同样,如果N2先走完了链表2的尽头,则从链表1的头节点继续遍历,也就是说,N1和N2都会遍历链表1和链表2。因为两个指针,同样的速度,走完同样长度(链表1+链表2),不管两条链表有无相同节点,都能够到达同时到达终点。(N1最后肯定能到达链表2的终点,N2肯定能到达链表1的终点)。使用两个指针N1,N2,一个从链表1的头节点开始遍历,我们记为N1,一个从链表2的头节点开始遍历,我们记为N2。

Alan0517 159

找出链表的第一个公共结点 java_盘点那些必问的数据结构算法题之链表

0 概述链表作为一种基础的数据结构,在很多地方会用到。如在Linux内核代码,redis源码,python源码中都有使用。除了单向链表,还有双向链表,本文主要关注单向链表(含部分循环链表题目,会在题目中注明,其他情况都是讨论简单的单向链表)。1 定义先定义一个单向链表结构,如下,定义了链表结点和链表两个结构体。这里我没有多定义一个链表的结构体,保存头指针,尾指针,链表长度等信息,目的也是为了多练习...

weixin_39667797的博客 94

两个有序链表序列的交集_每日算法题 | 剑指offer 链表专题 (10) 两个链表的第一个公共结点...

点击上方“Jerry的算法和NLP”,选择“星标”公众号 重磅干货,第一时间送达题目两个链表的第一个公共结点题目要求输入两个链表,找出它们的第一个公共结点。解题思路思路一:两条相交的链表呈Y型。可以从两条链表尾部同时出发,最后一个相同的结点就是链表的第一个相同的结点。可以利用栈来实现。时间复杂度有O(m + n), 空间复杂度为O(m + n)思路二:思路一其实利用栈主要解决就...

weixin_39679664的博客 181

剑指offer--算法题--26--两个链表的第一个公共结点

题目描述: 输入两个链表,找出它们的第一个公共结点。   输入: 输入可能包含多个测试样例。 对于每个测试案例,输入的第一行为两个整数m和n(1&lt;=m,n&lt;=1000):代表将要输入的两个链表的元素的个数。 接下来的两行,第一行为第一个链表的所有元素,中间用空格隔开。第二行为第二个链表的所有元素,中间用空格隔开。   输出: 对应每个测试案例, 输出两个链表的第一个公共结...

lsm18829224913的博客 202

简单记录牛客top101算法题(初级题C语言实现)BM8 链表中倒数最后k个结点 && BM10 两个链表的第一个公共结点&& BM6 判断链表中是否有环

要求:输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。如果该链表长度小于k,请返回一个长度为 0 的链表。输入: {1 , 2 , 3 , 4 , 5 } , 2 返回值: {4 , 5 } 说明:返回倒数第 2 个节点 4 ,系统会打印后面所有的节点来比较。输入: {2 } , 8 返回值: {

m0_64053511的博客 546

牛客刷题日记【链表中倒数最后k个结点|删除链表的倒数第n个节点|两个链表的第一个公共结点】

输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。如果该链表长度小于k,请返回一个长度为 0 的链表。数据范围:0≤n≤1050≤na**ik≤109要求:空间复杂度 O(n)On),时间复杂度 O(n)On进阶:空间复杂度 O(1)O(1),时间复杂度 O(n)On思考:设置双指针,让第一个指针先移动k个长度,然后两个指针一起移动。当第一个指针移动到最后时,第二个指针指的就是目标节点。

XiaoChe21的博客 379

链表常考算法题

1.链表的倒数第K个结点 问题描述: 输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是值为4的结点,需要保证时间复杂度。 算法思路: 设置两个指针p1,p2,从头到尾开始出发,一个指针先出发k个节点,然后第二个指针再进行出发,当第一个指针到达链表的节点的时候,则第二个指针表示的位置就是链表的倒数第k个节点的位置。 代码如下:

qq_43103261的博客 865
上一篇: 【算法题】丑数
下一篇: 【算法题】设计LRU缓存
Steven_L_
博客等级 码龄7年 5粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值