剖解相交链表

news2024/11/24 14:39:25

相交链表

在这里插入图片描述

在这里插入图片描述

思路:我们计算A和B链表的长度,求出他们的差值(len),让链表长的先多走len步,最后在A,B链表一起向后走,即可相逢于相交节点

实现代码如下:

public class Solution {

    public int size(ListNode phead){
        if(phead==null){
            return 0;
        }
        ListNode cur=phead;
        int count=0;
        while(cur!=null){
            count++;
            cur=cur.next;
        }
        return count;
    }

    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode pl=headA;//long
        ListNode ps=headB;//short
        int lenA=size(pl);
        int lenB=size(ps);
        if(headA==null||headB==null){//如果其中一个链表为空,则不存在相交节点,直接返回null
            return null;
        }
        if(lenA>lenB){
        //如果A链表长度 > B链表,让pl引用指向A链表
        //ps引用指向B链表
            pl=headA;
            ps=headB;
        }else {
        //如果A链表长度 < B链表,让ps引用指向A链表
        //pl引用指向B链表
            ps=headA;
            pl=headB;
        }
        //计算两链表的长度差
        int len=0;
        if(lenA>lenB){
            len=lenA-lenB;
        }else {
            len=lenB-lenA;
        }
        //让长链表先多走len步
        while (len!=0){
            pl=pl.next;
            len--;
        }
        while(pl!=null){
        //若节点的next域指向相同,则说明找到了相交节点
            if(pl==ps){
                return ps;
            }
            pl=pl.next;
            ps=ps.next;
        }
        //链表走到底,为空了,还没有找到,就说明不存在相交节点,返回null
        return null;
    }
}

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

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

相关文章

单链表进阶

之前已经介绍过单链表及其一些简单的功能 这次来简单介绍单链表一些的其他接口 1.在指定位置之前插入数据 具体原码&#xff0c;三个参数&#xff0c;phead是链表的指针&#xff0c;pos是节点的地址&#xff0c;x是需要插入的数据。 pos不能为空指针&#xff0c;因为pos为空…

React启动时 Error: error:0308010C:digital envelope routines::unsupported

错误信息&#xff1a; 错误原因&#xff1a;通常与 Node.js 的新版本中 OpenSSL 的默认行为变化有关。从 Node.js 17 开始&#xff0c;OpenSSL 默认启用了 OpenSSL 3.0 的一些新特性&#xff0c;这可能会影响到一些旧的或未更新的库。 解决办法&#xff1a;可以通过设置环境变…

基于STM32设计的室内育苗环境管理系统(物联网)

文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成 1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发 1.5 模块的技术详情介绍【1】ESP8266-WIFI模块【2】MQ135传感器【4】DHT11传感器【5】B1750传感器 …

【Diffusion分割】FDiff-Fusion:基于模糊学习的去噪扩散融合网络

FDiff-Fusion: Denoising diffusion fusion network based on fuzzy learning for 3D medical image segmentation 摘要&#xff1a; 近年来&#xff0c;去噪扩散模型在图像分割建模中取得了令人瞩目的成就。凭借其强大的非线性建模能力和优越的泛化性能&#xff0c;去噪扩散模…

Flexus X实例全方位指南:智能迁移、跨云搬迁加速与虚机热变配能力的最佳实践

目录 前言 一、云迁移关键挑战 1、企业实例选型关键挑战 2、云算力关键挑战之一 3、云算力关键挑战之二 二、本地IT及其他云搬迁到Flexus X实例上的独有优势 1、Flexus X实例超强性能&#xff0c;遥遥领先同规格友商实例 &#xff08;1&#xff09;底层多重调优&#x…

网络编程——TCP网络通信

通信步骤&#xff1a; 1、连接 2、传输数据 3、关闭连接服务端的创建流程&#xff1a; 1、创建服务端socket对象 socket_family:网络地址类型AF_INET--代表的是ipv4地址类型 socket_type:套接字类型SOCK_STREAM--代表的是tcp套接字SOCK_DGRAM--代表的是udp套接字 2、绑定自己的…

新房安装了约克VRF中央空调真的是明智的选择!

夏天越来越热&#xff0c;新房安装了中央空调真的是太明智了&#xff01;当初装修时&#xff0c;考虑到家里空间大&#xff0c;我就决定装一个中央空调。对比了好多品牌后&#xff0c;朋友推荐了约克VRF中央空调。装好以后&#xff0c;简直惊喜不断&#xff01;      强效除…

基于SpringBoot+Vue+MySQL的美食点餐管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 在数字化快速发展的今天&#xff0c;餐饮行业也迎来了转型升级的重要机遇。传统餐饮管理方式面临效率低下、顾客体验不佳等问题。为此&#xff0c;开发一款基于SpringBootVueMySQL架构的美食点餐管理系统显得尤为重要。该系统旨…

【Qualcomm】高通SNPE框架简介、下载与使用

目录 一 高通SNPE框架 1 SNPE简介 2 QNN与SNPE 3 Capabilities 4 工作流程 二 SNPE的安装与使用 1 下载 2 Setup 3 SNPE的使用概述 一 高通SNPE框架 1 SNPE简介 SNPE&#xff08;Snapdragon Neural Processing Engine&#xff09;&#xff0c;是高通公司推出的面向移…

Leetcode尊享面试100题-252.会议室

给定一个会议时间安排的数组 intervals &#xff0c;每个会议时间都会包括开始和结束的时间 intervals[i] [starti, endi] &#xff0c;请你判断一个人是否能够参加这里面的全部会议。 示例 1&#xff1a; 输入&#xff1a;intervals [[0,30],[5,10],[15,20]] 输出&#xff…

记录Mac编译Android源码踩过的坑

学习Android源码&#xff0c;如果电脑配置还不错&#xff0c;最好还是下载一套源码&#xff0c;经过编译后导入到Android Studio中来学习&#xff0c;这样会更加的直观&#xff0c;代码之间的跳转查看会更加方便。因此&#xff0c;笔者决定下载并编译一套源码&#xff0c;以利于…

【C++算法】链表

知识总结 常用技术&#xff1a; 1.画图&#xff01;&#xff01;——>直观形象便于理解 2.引入虚拟”头结点“ 便于处理边界情况方便对链表操作 3.不要吝啬空间&#xff0c;大胆定义变量 4.快慢双指针——判环、找链表中环的入口、找链表中倒数第n个节点 链表中的常用…

电力领域大模型

2023年12月&#xff0c;arXiv预印本平台发表了一篇题为"Large Foundation Models for Power Systems"的研究论文。该文系统探讨了大型基础模型如大型语言模型&#xff08;LLMs&#xff09;在电力系统建模和运行中的应用前景。研究重点关注了大型基础模型在最优潮流计…

php+mysql安装

1.卸载mysql 没启动不停止 2.下载 3.解压 4.点击安装 5.出现成功 端口占用修改 修改端口89或者87 可视化扩展 修改后重启 开启扩展

consul注册中心与容器自动发现实战

consul简介 Consul 是 HashiCorp 公司推出的开源工具&#xff0c;用于实现分布式系统的服务发现与配置。内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案&#xff0c;不再需要依赖其它工具&#xff08;比如 ZooKeeper 等&#xff0…

springboot快速开发平台使用达梦数据库

1.首先来到DM管理工具 大致流程是&#xff1a;创建表空间&#xff08;用于给新建的用户使用&#xff09;-》创建用户&#xff08;绑定表空间&#xff09; 文件位置 2.创建用户 来到所属角色页面&#xff0c;第一个权限管理员一定要勾上&#xff0c;其他的看情况 3.来到DM数…

9.24每日作业

1> 思维导图 2> 将昨天的My_string类中的所有能重载的运算符全部进行重载 、[] 、>、、>) 3> 仿照stack类实现my_stack,实现一个栈的操作 text.h #ifndef LIST_H #define LIST_H #include <iostream> #include <string.h>using namespace std;…

Java项目: 基于SpringBoot+mybatis+maven医疗病历交互系统(含源码+数据库+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismaven医疗病历交互系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简…

力扣 简单 206.反转链表

文章目录 题目介绍题解 题目介绍 题解 法一&#xff1a;双指针 在遍历链表时&#xff0c;将当前节点的 next 改为指向前一个节点。由于节点没有引用其前一个节点&#xff0c;因此必须事先存储其前一个节点。在更改引用之前&#xff0c;还需要存储后一个节点。最后返回新的头引…

不靠学历,不拼年资,怎么才能月入2W?

之前统计局发布了《2023年城镇单位就业人员年平均工资情况》&#xff0c;2023年全国城镇非私营单位和私营单位就业人员年平均工资分别为120698元和68340元。也就是说在去年非私营单位就业人员平均月薪1W&#xff0c;而私营单位就业人员平均月薪只有5.7K左右。 图源&#xff1a;…