【CT】LeetCode手撕—160. 相交链表

目录

  • 题目
  • 1- 思路
  • 2- 实现
    • ⭐160. 相交链表——题解思路
  • 3- ACM 实现

题目

  • 原题连接:160. 相交链表

1- 思路

  • 模式识别:相交链表 ——> 判断是否相交

思路

  • 保证 headA 是最长的那个链表,之后对其开始依次遍历

2- 实现

⭐160. 相交链表——题解思路

在这里插入图片描述

public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        // 求 headA 和 headB 长度
        int lenA = 0;
        int lenB = 0;
        ListNode curA = headA;
        ListNode curB = headB;
        while(curA!=null){
            lenA++;
            curA = curA.next;
        }
        while(curB!=null){
            lenB++;
            curB = curB.next;
        }
        if(lenB>lenA){
            ListNode tmp = headB;
            headB = headA;
            headA = tmp;

            int lenTmp = lenA;
            lenA = lenB;
            lenB = lenTmp;
        }
        curA = headA;
        curB = headB;
        for(int i = 0 ; i < lenA-lenB ;i++){
            curA = curA.next;
        }

        while(curA!=null  && curB!=null){
            if(curA == curB){
                return curA;
            }
            curA = curA.next;
            curB = curB.next;
        }
        return null;
    }
}

3- ACM 实现

public class intersectLink {

    static class ListNode{
        int val;
        ListNode next;
        ListNode(){}
        ListNode(int x){
            val =x;
        }
    }


    public static ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        // 求 headA 和 headB 长度
        int lenA = 0;
        int lenB = 0;
        ListNode curA = headA;
        ListNode curB = headB;
        while(curA!=null){
            lenA++;
            curA = curA.next;
        }
        while(curB!=null){
            lenB++;
            curB = curB.next;
        }
        if(lenB>lenA){
            ListNode tmp = headB;
            headB = headA;
            headA = tmp;

            int lenTmp = lenA;
            lenA = lenB;
            lenB = lenTmp;
        }
        curA = headA;
        curB = headB;
        for(int i = 0 ; i < lenA-lenB ;i++){
            curA = curA.next;
        }

        while(curA!=null  && curB!=null){
            if(curA == curB){
                return curA;
            }
            curA = curA.next;
            curB = curB.next;
        }
        return null;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入链表A和B的长度");
        int lenA = sc.nextInt();
        int lenB = sc.nextInt();
        System.out.println("输入链表A元素");
        ListNode headA = new ListNode(-1);
        ListNode curA = headA;
        for(int i = 0 ; i < lenA; i++){
            curA.next = new ListNode(sc.nextInt());
            curA = curA.next;
        }

        System.out.println("输入链表B的元素");
        ListNode headB = new ListNode(-1);
        ListNode curB = headB;
        for(int i = 0 ; i < lenB;i++){
            curB.next = new ListNode(sc.nextInt());
            curB = curB.next;
        }

        System.out.println("输入相交链表的长度");
        int intersectLen = sc.nextInt();
        ListNode intersectHead = new ListNode(-1);
        ListNode curIntersect = intersectHead;
        System.out.println("输入相交链表");
        for(int i = 0 ; i < intersectLen;i++){
            curIntersect.next = new ListNode(sc.nextInt());
            curIntersect = curIntersect.next;
        }

        if (intersectLen > 0) {
            curA.next = intersectHead.next;
            curB.next = intersectHead.next;
        }

        ListNode forRes = getIntersectionNode(headA,headB);
        System.out.println(forRes.val);
    }

}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt底层原理:深入解析QWidget的绘制技术细节(1)

在Qt5中&#xff0c;QWidget的绘制流程比较分散&#xff0c;网上介绍的文章也很少&#xff0c;因此写一篇文章总结记录一下这部分的知识点。 笔者使用的是Qt5.15.2的源码。 基本的绘制流程&#xff1a;从update到合成 更新请求&#xff08;Invalidate&#xff09;: 当一个QWidg…

从设计到实践:高速公路监控技术架构全剖析

随着高速公路网络的迅速扩展和交通流量的日益增加&#xff0c;高效的监控系统成为保障交通安全、提升管理效率的重要手段。本文将深入探讨高速公路监控技术架构&#xff0c;从设计理念到实际应用&#xff0c;全面解析这一关键技术的各个环节。 ### 一、系统设计理念 #### 1. 高…

岁月长河中的温柔等待

在那个年代&#xff0c;爱情往往像是一条静静流淌的小河&#xff0c;不动声色却又波澜不惊。在一个小村庄里&#xff0c;住着一对中年夫妻&#xff0c;人们叫他们李大叔和赵阿姨。他们的故事&#xff0c;就像是那个时代的缩影&#xff0c;承载着岁月的沧桑与深情的守候。 李大…

PyCharm新手入门

前言 在之前《Python集成开发工具的选择》一文中介绍了python初学者可以使用Jupyter Notebook&#xff0c;Jupyter Notebook简单易用&#xff0c;可以用来练习代码编写&#xff0c;但是实际生产开发环境使用这个工具是远远不够用的&#xff0c;因为实际软件开发中需要软件调试…

大数据数据挖掘系统可视化设计艺术

1.系统背景 在我们实际进行数据挖掘研发过程中&#xff0c;为了验证某些算法在业务中的性能每次都需要去从头写代码&#xff0c;如果我们将我们研发的算法以模块化的思想封装起来&#xff0c;下次再使用的时候直接在系统中进行拖拉一下生成一个工作流&#xff0c;就能完成数据挖…

Hive数据锁问题处理

在测试环境有定时任务会定期将flume采集的数据load到hive表中&#xff0c;在查看yarn application过程中发现load操作没有执行&#xff0c;且后续的任务在上一个任务执行结束后很久才开始。感觉像是阻塞一样&#xff0c;于是手动执行相关脚本&#xff0c;发现也是会卡住&#x…

无引擎游戏开发(3):数据结构设计|功能函数完善

为了简单起见&#xff0c;我们将棋盘的二维数组定义为全局变量。除此之外还要定义一个char类型的全局变量来识别当前的落子类型&#xff0c;我们将其初始化为‘O’。 char Board_data[3][3] {{-, -, -},{-, -, -},{-, -, -}, };char Cur_piece O; 现在回到“读取操作”部分…

Rancher注册已有k8s集群

Rancher安装后注册K8s集群操作 1.Rancher安装 编辑docker—compose文件 version: 3.8services:rancher:image: registry.cn-hangzhou.aliyuncs.com/rancher-images/rancher:v2.8.5container_name: rancherprivileged: truerestart: unless-stoppedports:- "18080:80&qu…

[创业之路-118] :制造业企业的必备管理神器-ERP-主要功能模块说明与系统架构

目录 一、ERP功能的标准化 二、常见的ERP标准化功能 2.1 基础档案 2.2 供应链 2.3 人力资源管理 2.4 资产管理 2.5 生产制造 2.6 财务会计 2.7 管理会计 2.8 CRM客户管理管理 2.9 商业智能分析 三、常见的ERP软件供应商 国内ERP软件供应商 国外ERP软件供应商 四…

西电研究生录取通知书来啦~ (吸吸欧气)

今日桂枝平折得 几年春色并将来&#xff0c;西安电子科技大学 那些深夜点灯的过往 那种日夜备考的迷惘 那个全力奔赴的梦想 都在这封通知书里得到回响&#xff01; —— Xidian University —— —— Xidian University —— XDU 今年的通知书采用紫色为主色 封面压印年…

阿里云API文档有哪些实用功能?如何使用?

阿里云API安全性如何保障&#xff1f;阿里云API怎么实现自动化&#xff1f; 阿里云作为全球领先的云计算服务提供商&#xff0c;提供了广泛的API接口&#xff0c;以满足各类用户的需求。阿里云API文档不仅详尽&#xff0c;而且易于使用&#xff0c;AokSend将详细介绍阿里云API…

渗透测试基础(四) MS08-067 漏洞攻击

1. 漏洞介绍 漏洞描述 Microsoft Windows Server服务RPC请求缓冲区溢出漏洞Windows的Server服务在处理特质RPC请求时存在缓冲区溢出漏洞&#xff0c;远程攻击者可以通过发送恶意的RPC请求触发这个溢出&#xff0c;导致完全入侵用户系统&#xff0c;以SYSTEM权限执行任意指令。…

iptables(3)规则管理

简介 上一篇文章中,我们已经介绍了怎样使用iptables命令查看规则,那么这篇文章我们就来介绍一下,怎样管理规则,即对iptables进行”增、删、改”操作。 注意:在进行iptables实验时,请务必在个人的测试机上进行,不要再有任何业务的机器上进行测试。 在进行测试前,为保障…

海量数据处理利器 Roaring BitMap 原理介绍

作者&#xff1a;来自 vivo 互联网服务器团队- Zheng Rui 本文结合个人理解梳理了BitMap及Roaring BitMap的原理及使用&#xff0c;分别主要介绍了Roaring BitMap的存储方式及三种container类型及Java中Roaring BitMap相关API使用。 一、引言 在进行大数据开发时&#xff0c;…

Raycaster--当物体放在容器中并做了转换,交点坐标不对的问题。

交点坐标问题 问题解决x关键点 总结 问题 子代放在了一个容器里&#xff0c;容器做了旋转、位移。 递归获得了最近的相交子代获取到的交点坐标并不是想要的交点坐标。 经过可视化观察&#xff0c;很像是没转换之前的坐标点。 解决x 在 Three.js 中&#xff0c;当你使用 Rayc…

详细介绍如何解决vcomp140.dll丢失的步骤,分享几种vcomp140.dll修复方法

当这个vcomp140.dll文件丢失时&#xff0c;可能会导致相关程序运行出错甚至无法运行。很多用户可能会遇到vcomp140.dll丢失的问题&#xff0c;但是这并不是不可解决的困难。接下来就和大家分享几种解决vcomp140.dll丢失的方法&#xff0c;给大家详细的关于如何解决vcomp140.dll…

matplotlib 做饼图

饼图可以很好地帮助用户快速了解整体市场数据的占比分配 import matplotlib.pyplot as pltexplode (0,0.1,0,0) labels Frogs,Hogs,Dogs,Logs sizes [15, 30, 45, 10] fig,ax plt.subplots() # colors 设置图形颜色 ;pctdistance&#xff1a;设置百分比标签与圆心的距离&am…

MacBook Air M3的电脑怎么样 新买MacBook Air提示内存不足 苹果电脑内存不够用怎么办

Apple的MacBook Air系列一直是轻薄便携笔记本电脑的代表&#xff0c;最新推出的MacBook Air M3因其出色的性能和优雅的设计而受到广泛关注。然而&#xff0c;许多用户在购买全新的MacBook Air后反应他们遇到了内存不足的提示。 本文将探讨MacBook Air M3的电脑怎么样&#xff0…

【MySQL】事务二

事务二 1.数据库并发的场景2.读-写2.1 3个记录隐藏字段2.2 undo日志2.3 模拟 MVCC2.4 Read View2.5 RR 与 RC的本质区别 3.读-读4.写-写 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我…

示例:应用DependencyPropertyDescriptor监视依赖属性值的改变

一、目的&#xff1a;开发过程中&#xff0c;经常碰到使用别人的控件时有些属性改变没有对应的事件抛出&#xff0c;从而无法做处理。比如TextBlock当修改了IsEnabled属性我们可以用IsEnabledChanged事件去做对应的逻辑处理&#xff0c;那么如果有类似Background属性改变我想找…