链表_相交链表

news2024/9/24 7:18:15

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

//给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 
//
// 图示两个链表在节点 c1 开始相交: 
//
// 
//
// 题目数据 保证 整个链式结构中不存在环。 
//
// 注意,函数返回结果后,链表必须 保持其原始结构 。 
//
// 自定义评测: 
//
// 评测系统 的输入如下(你设计的程序 不适用 此输入): 
//
// 
// intersectVal - 相交的起始节点的值。如果不存在相交节点,这一值为 0 
// listA - 第一个链表 
// listB - 第二个链表 
// skipA - 在 listA 中(从头节点开始)跳到交叉节点的节点数 
// skipB - 在 listB 中(从头节点开始)跳到交叉节点的节点数 
// 
//
// 评测系统将根据这些输入创建链式数据结构,并将两个头节点 headA 和 headB 传递给你的程序。如果程序能够正确返回相交节点,那么你的解决方案将被 视
//作正确答案 。 
//
// 
//
// 示例 1: 
//
// 
//
// 
//输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,6,1,8,4,5], skipA = 2, 
//skipB = 3
//输出:Intersected at '8'
//解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。
//从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,6,1,8,4,5]。
//在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。
//— 请注意相交节点的值不为 1,因为在链表 A 和链表 B 之中值为 1 的节点 (A 中第二个节点和 B 中第三个节点) 是不同的节点。换句话说,它们在内
//存中指向两个不同的位置,而链表 A 和链表 B 中值为 8 的节点 (A 中第三个节点,B 中第四个节点) 在内存中指向相同的位置。
// 
//
// 
//
// 示例 2: 
//
// 
//
// 
//输入:intersectVal = 2, listA = [1,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 
//1
//输出:Intersected at '2'
//解释:相交节点的值为 2 (注意,如果两个链表相交则不能为 0)。
//从各自的表头开始算起,链表 A 为 [1,9,1,2,4],链表 B 为 [3,2,4]。
//在 A 中,相交节点前有 3 个节点;在 B 中,相交节点前有 1 个节点。
// 
//
// 示例 3: 
//
// 
//
// 
//输入:intersectVal = 0, listA = [2,6,4], listB = [1,5], skipA = 3, skipB = 2
//输出:null
//解释:从各自的表头开始算起,链表 A 为 [2,6,4],链表 B 为 [1,5]。
//由于这两个链表不相交,所以 intersectVal 必须为 0,而 skipA 和 skipB 可以是任意值。
//这两个链表不相交,因此返回 null 。
// 
//
// 
//
// 提示: 
//
// 
// listA 中节点数目为 m 
// listB 中节点数目为 n 
// 1 <= m, n <= 3 * 10⁴ 
// 1 <= Node.val <= 10⁵ 
// 0 <= skipA <= m 
// 0 <= skipB <= n 
// 如果 listA 和 listB 没有交点,intersectVal 为 0 
// 如果 listA 和 listB 有交点,intersectVal == listA[skipA] == listB[skipB] 
// 
//
// 
//
// 进阶:你能否设计一个时间复杂度 O(m + n) 、仅用 O(1) 内存的解决方案? 
//
// Related Topics 哈希表 链表 双指针 👍 2275 👎 0


//leetcode submit region begin(Prohibit modification and deletion)


/**
 * Definition for singly-linked list.
 * public class ListNode {
 * int val;
 * ListNode next;
 * ListNode(int x) {
 * val = x;
 * next = null;
 * }
 * }
 */
public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode curA = headA;
        int listAlength = 0;
        while (curA != null) {
            listAlength++;
            curA = curA.next;
        }

        ListNode curB = headB;
        int listBlength = 0;
        while (curB != null) {
            listBlength++;
            curB = curB.next;
        }

        //更长的换到节点A这条链
        if (listBlength > listAlength) {
            ListNode temp = headA;
            headA = headB;
            headB = temp;
            int tempLen = listAlength;
            listAlength = listBlength;
            listBlength = tempLen;
        }

        int move = listAlength - listBlength;
        curA = headA;
        curB = headB;
        while (move > 0) {
            curA = curA.next;
            move--;
        }

        //两条链都从相同长度开始出发,发现相等的节点,则说明当前链表开始相交
        while (curA != null) {
            if (curA == curB) {
                return curA;
            }
            curA = curA.next;
            curB = curB.next;
        }

        return null;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

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

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

相关文章

提升技能素养,AMCAP做出合适的决策

近年来&#xff0c;智能配置投资与理财逐渐受到关注并走俏。这是一种简单快捷的智慧化理财方式&#xff0c;通过将个人和家族的闲置资金投入到低风险高流动性的产品中。 国际财富管理投资机构AMCAP集团金融分析师表示&#xff1a;智能配置投资与理财之所以持续走俏&#xff0c…

WebUI工作流插件超越ComfyUI

在AI绘画领域&#xff0c;Stable Diffsion是最受欢迎的&#xff0c;因为它是开源软件。 开源有两大优势&#xff0c;一是免费&#xff0c;二是适合折腾。 大量的开发者、爱好者投入无尽的热情&#xff0c;来推动Stable Diffsion的快速发展。 在图形界面方面&#xff0c;WebU…

Python 进阶(十二):随机数(random 模块)

《Python入门核心技术》专栏总目录・点这里 文章目录 1. 导入random库2. 常用随机数函数2.1 生成随机浮点数2.2 生成随机整数2.3 从序列中随机选择2.4 随机打乱序列3. 设置随机数种子4. 应用实例4.1 游戏开发4.2 数据分析4.3 加密与安全4.4 模拟实验5. 总结大家好,我是水滴~~ …

Linux常用命令——mv命令

文章目录 1. 简介2. 命令格式3. 主要参数4. 常见用法及示例4.1 移动文件4.2 重命名文件4.3 交互式移动文件4.4 强制移动文件4.5 移动多个文件4.6 使用通配符移动文件 5. 注意事项6. 结论 1. 简介 mv 命令在Linux系统中用于移动文件或目录&#xff0c;同时也可以用于重命名文件…

Python使用——发送Get请求,模拟http请求 进行SSH连接服务器

前言 本篇博客是python开发的使用案例博客&#xff0c;结合一些具体的案例进行阐述&#xff0c;本篇博客主要内容是使用Python发送Get请求&#xff0c;模拟http请求&#xff0c;后面可以搞个爬虫出来&#xff0c;另外就是如何使用Python进行SSH连接服务器。 其他相关的博客文…

【代码随想录】算法训练计划37

贪心 1、738. 单调递增的数字 题目&#xff1a; 输入: n 10 输出: 9 思路&#xff1a; func monotoneIncreasingDigits(n int) int {// 贪心&#xff0c;利用字符数组s : strconv.Itoa(n)ss : []byte(s)leng : len(ss)if leng < 1 {return n}for i:leng-1; i>0; i-- …

【MATLAB】异常数据识别

基于分位数的异常点识别 首先&#xff0c;给定了一个原始数据序列x。然后&#xff0c;计算了序列x的上四分位数和下四分位数&#xff0c;并根据这两个值计算了异常点的阈值。上四分位数减去1.5倍的四分位数范围得到异常值下界&#xff0c;下四分位数加上1.5倍的四分位数范围得…

虚拟数据生成_以Python为工具

生成虚拟数据_以Python为工具 生成虚拟数据技术在现实生活中具有多个重要的应用领域。它为数据隐私保护、机器学习算法开发、数据处理和可视化等方面提供了实用且有价值的解决方案。尤其是能满足定制化需求的虚拟数据&#xff0c;在预期的方向上让数据定向随机。 &#x1f339…

下载MySQL JDBC驱动的方法

说明 java代码通过JDBC访问MySQL数据库&#xff0c;需要MySQL JDBC驱动。 例如&#xff0c;下面这段代码&#xff0c;因为找不到JDBC驱动&#xff0c;所以执行会报异常&#xff1a; package com.thb;public class JDBCDemo {public static void main(String[] args) throws …

全网最最全的Jmeter接口测试:jmeter_逻辑控制器_交替控制器Jmeter(22):jmeter_逻辑控制器_交替控制器

交替控制器 该控制器包含的取样器步骤在每次循环中交替执行 交替控制器指每次运行一次时在交替控制器下的采样器只执行一个&#xff1b;如下图&#xff1a; 忽略子控制模块&#xff1a;如果勾选此项,交替控制器将子控制器像单一请求元素一样&#xff0c;一次 只允许一个请求/…

csdn最新最全面的Jmeter接口测试:jmeter_逻辑控制器_循环控制器

循环控制器 循环次数&#xff1a;设置该控制器下的请求的循环执行次数 永远&#xff1a;勾选上的话&#xff0c;会一直循环&#xff0c;即所谓死循环 注意&#xff1a;如果线程组本身已经设置了循环次数的话&#xff0c;那循环控制元件控制的子节点 的循环次数为线程组设置的…

C语言——写一个简单函数,找两个数中最大者

#include <stdio.h>int max( int a, int b ) { return a>b ? a:b; }int main() { int a, b;printf("输入两个数:\n");scanf("%d %d", &a, &b);printf("max %d\n", max(a, b));return 0; }输出结果&#xff1a;

黑洞:宇宙中最神秘的天体

黑洞&#xff1a;宇宙中最神秘的天体 一、引言 在浩瀚的宇宙中&#xff0c;有一种神秘的天体&#xff0c;它强大到连光也无法逃逸&#xff0c;这就是黑洞。自从黑洞理论被提出以来&#xff0c;它一直是物理学家和天文学家研究的焦点。尽管我们还无法直接看到黑洞&#xff0c;…

六:Day01_Spring Boot01

一、Spring Boot简介 1. 概念简介 Spring Boot是Spring公司的一个顶级项目&#xff0c;和Spring Framework是一个级别的。 Spring Boot实际上是利用Spring Framework 4 自动配置特性完成。编写项目时不需要编写xml文件。 2. 启动器介绍 Spring Boot的启动器实际上就是一个依赖…

CMA、CNAS资质对于第三方软件检测公司意味着什么?

软件企业在了解软件检测时&#xff0c;会常常看到CMA、CNAS字样&#xff0c;那么作为软件行业内重要的合作伙伴第三方软件检测公司来说&#xff0c;CMA、CNAS资质分别是什么?又有什么意义呢? 1、CMA   CMA是中国计量认证的英文简称&#xff0c;是由省级以上人民政府计量行…

电商营销场景的RocketMQ实战01-RocketMQ原理

架构图 Broker主从架构与集群模式 RocketMQ原理深入剖析 Broker主从架构原理 HAConnection与HAClient Broker基于raft协议的主从架构 Consumer运行原理 基础知识 001_RocketMQ架构设计与运行流程分析 RocketMQ这一块&#xff0c;非常关键的一个重要的技术&#xff0c;面试的时候…

操作系统--中断异常

操作系统第一章易错总结 1.操作系统的功能 ⭐ 编译器是操作系统的上层软件&#xff0c;不是操作系统需要提供的功能。 ⭐注意&#xff1a; 1.批处理的主要缺点是缺乏交互性 2.输入/输出指令需要中断操作&#xff0c;中断必须在核心态下执行 3.多道性是为了提高系统利用率和…

使用easyExcel框架报错:服务器缺少字体

后台服务使用easyExcel框架生成表格&#xff0c;但是生成的时候报如下的错误&#xff1a; 这种报错其实就是部署服务的服务器缺少字体&#xff0c;正确的方法是安装字体。需要注意的是&#xff0c;测试环境服务器与生产环境服务器的在配置版本上可能存在差异&#xff0c;因此需…

再探Java集合系列—LinkedHashMap

LinkedHashMap 继承了 HashMap 所以LinkedHashMap也是一种k-v的键值对&#xff0c;并且内部是双链表的形式维护了插入的顺序 LinkedHashMap如何保证顺序插入的&#xff1f; 在HashMap中时候说到过HashMap插入无序的 LinkedHashMap使用了双向链表&#xff0c;内部的node节点包含…

YOLOv8改进 | 2023 | 通过RFAConv重塑空间注意力(深度学习的前沿突破)

一、本文介绍 本文给大家带来的改进机制是RFAConv&#xff0c;全称为Receptive-Field Attention Convolution&#xff0c;是一种全新的空间注意力机制。与传统的空间注意力方法相比&#xff0c;RFAConv能够更有效地处理图像中的细节和复杂模式(适用于所有的检测对象都有一定的…