链表OJ—相交链表

news2024/11/19 3:47:06

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

前言

1、相交链表的题目:

方法讲解:

图文解析:

代码实现:

总结


前言

世上有两种耀眼的光芒,一种是正在升起的太阳,一种是正在努力学习编程的你!一个爱学编程的人。各位看官,我衷心的希望这篇博客能对你们有所帮助,同时也希望各位看官能对我的文章给与点评,希望我们能够携手共同促进进步,在编程的道路上越走越远!


提示:以下是本篇文章正文内容,下面案例可供参考

1、相交链表的题目:

方法讲解:

图文解析:

解题思路:

分别找到A、B两个链表的尾节点,尾节点地址相同,就说明两个链表相交;若尾节点地址不同,就说明两个链表不相交。分别求出A、B两个链表的长度,长的先走差距步,然后再同时走,当节点的地址相同时,就说明这个节点就是相交的起始节点。

代码实现:

 typedef struct ListNode ListNode;
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {
   struct ListNode*cur1 = headA;
   struct ListNode*cur2 = headB;
    int len1 = 1;
    int len2 = 1;
    //求链表A、B的长度
    //链表A、B的最后一个节点的不满足循环条件,就没进去
    while(cur1->next)
    {
        len1++;
        cur1 = cur1->next;
    }
    while(cur2->next)
    {
        len2++;
        cur2 = cur2->next;
    }
    //判断链表A、B是否相交
    if(cur1 != cur2)
    {
        return NULL;
    }
    //求链表A、B长度差的绝对值
    int n = abs(len1 - len2);
    //假设链表A比链表B的长度长
    struct ListNode*longList = headA;
    struct ListNode*shortList = headB;
    if(len2>len1)
    {
        longList = headB;
        shortList = headA;
    }
    //长的先走差距步
    while(n--)
    {
        longList = longList->next;
    }
    //同时走
    while(longList != shortList)
    {
        longList = longList->next;
        shortList = shortList->next;
    }
    return longList;
}


总结

好了,本篇博客到这里就结束了,如果有更好的观点,请及时留言,我会认真观看并学习。
不积硅步,无以至千里;不积小流,无以成江海。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1298396.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《PySpark大数据分析实战》图书上线啦

《PySpark大数据分析实战》图书上线啦 《PySpark大数据分析实战》图书上线啦特殊的日子关于创作关于数据关于Spark关于PySpark关于图书/专栏 《PySpark大数据分析实战》图书上线啦 特殊的日子 不知不觉一转眼入驻CSDN已经满一年了,这真是一个充满意义的特殊的日子&…

SystemUI下拉通知菜单栏定时自动隐藏

前言 在系统应用开发过程中,常常遇到一些特殊的需求,Android原生的应用并无此适配,此时需要对系统应用进行定制化开发。 目前遇到的这样一个需求:下拉通知菜单栏时,定时8秒后自动关闭通知菜单栏。通知菜单栏为Sytstem…

如何用Python编写俄罗斯方块Tetris游戏?

在本文中,我们将用Python代码构建一个令人惊叹的项目:俄罗斯方块游戏。在这个项目中,我们将使用pygame库来构建游戏。要创建此项目,请确保您的系统中安装了最新版本的Python。让我们开始吧! Pygame是一组跨平台的Pyth…

Mysql研学-认识与安装

一 数据库 1 Java的数据存储技术 ① 变量:一个数据存储空间的表示 ② 数组:存储一组相同数据类型的"容器" ③ 集合:存储一组任意引用数据类型的"容器" ④ 配置文件: .properties:基于Properties集合存储(Map集合的具体实例) .xml文件:基于标签存储数据…

centos7 安装 mysql8 详细步骤记录

下载 mysql 8 更新系统: sudo yum update 添加 MySQL Yum存储库: sudo rpm -Uvh https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm 安装 MySQL 8: sudo yum install mysql-server 重置密码 查看初始密码&#xff1…

三种入耳检测光感芯片驱动开发比较

三种入耳检测光感芯片驱动开发比较 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,群赠送语音信号处理降噪算法,蓝牙耳机音频,DSP音频项目核心开发资料, 重要的寄存器…

应用层之应用层的网络应用模型————C/S和P2P、域名解析系统DNS、文件传输协议FTP

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

Ubuntu上svn基本使用(gitee提交下载)

目录 环境准备 1. 获取代码到本地 直接获取 获取代码时加入用户名密码 指定版本更新 2. 提交代码 3. 展示代码列表 4. 添加代码文件(目录) 5. 删除gitee仓库中的文件 参考文档链接 环境准备 当前操作系统为Ubuntu22.04LTS gitee 创建仓库时 需要打开svn的支持 sudo…

54.grpc实现文件上传和下载

文章目录 一:简介1. 什么是grpc2. 为什么我们要用grpc 二:grpc的hello world1、 定义hello.proto文件2、生成xxx_grpc.pb.go文件3、生成xxx.pb.go结构体文件4、编写服务代码service.go5、编写客户端代码client.go 三、服务端流式传输:文件下载…

短视频无人实景直播源码技术开发=抖去推saas直播源码

开发无人直播源码技术需要具备一定的编程和网络知识。以下是一些基本的步骤和资源,帮助你进行无人直播源码的开发搭建: 1. 选择编程语言和开发环境:根据你的个人喜好和技术熟练程度,可以选择一些流行的编程语言,如Pyth…

根据应聘者的姓名和所学专业判断是否需要这样的程序设计人员

一、程序分析 导入Scanner函数,分别输入应聘者的姓名和应聘者所学的程序设计语言。 二、具体代码 import java.util.Scanner; public class Recruitment {public static void main(String[] args){try (Scanner scan new Scanner(System.in)) {System.out.prin…

【Vue】设置路由默认跳转指定页面

目录 设置路由默认跳转 上一篇: 登录注册界面制作 https://blog.csdn.net/m0_67930426/article/details/134895214?spm1001.2014.3001.5502 以这篇文章为例 首先我们要了解一下vue项目的router包的作用 上一篇文章里,创建了登录注册页面 如果我们…

SpringSecurity6 | 自定义登录页面

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: Java从入门到精通 ✨特色专栏&#xf…

Qt开发 之 Qt5各版本情况分析

文章目录 1、简介2、Qt5 版本归纳3、下载地址3.1、典型版本3.1.1、Qt5.0.03.1.2、Qt5.9.93.1.3、Qt5.12.12 3.2、当前Qt5最新版本 1、简介 Qt6 出生刚刚好一年的时间,已经出到6.6版本,带来了许多的新特性和改进。今天刚刚好抽空总结下陪伴 我工作这么长…

【K8S in Action】副本机制与控制器:部署托管的Pod

通过控制器来运行托管的 pod,Pod失败的时候自动重新启动它们。 1. 保持pod健康 从外部检查应用程序的运行状况: HTTPGET探针对容器的 IP 地址TCP套接字探针尝试与容器指定端口建立TCP连接Exec探针在容器内执行任意命令,并检查命令的退出状态码。如果状…

智能优化算法应用:基于人工兔算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于人工兔算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于人工兔算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.人工兔算法4.实验参数设定5.算法结果6.参考文献7.…

初出茅庐的小李博客之TobudOS移植到EVB_AIoT开发板

本博客参考教程: https://atomgit.com/OpenAtomFoundation/TobudOS/blob/master/doc/TobudOS_EVB_AIoT_STM32_Guide.md 介绍一下EVB_AIoT开发板 这个开发板是由TobudOS开源社区联合意法半导体、南京厚德物联网设计的一款高性能IoT开发平台,主控芯片是S…

学校安全检查系统

校园面积大、安全盲区多对学校安全管理带来诸多挑战;传统依靠人工纸质巡检记录存在漏检、管理难、联动差等诸多问题和缺点,巡检过程中很容易遗漏安全隐患的存续,从而导致安全事故的发生。 通过凡尔码平台模块化搭建学校安全管理系统&#xf…

【Bootloader学习理解----跳转优化异常】

笔者接着来介绍一下Bootloader的跳转代码以及优化 1、跳转代码理解 跳转代码可能要涉及到芯片架构的知识,要跳转到对应的位置,还要设置相关的SP 堆栈指针,具体可以参考笔者这篇文章BootLoader的理解与实现。 STM32的跳转代码如下所示: u32 …

多张二维码能一次解码处理吗?3个步骤就能完成

二维码是现在生活中很常见的内容承载方式,但是有时候我们需要将二维码内容转换成文本或者链接来使用,那么如何处理能够将二维码分解处理呢?想要将多张二维码图片分解处理,那么为了提高效率可以用二维码解码器的批量解码功能来处理…