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

news2024/11/24 14:46:56

目录

  • 题目
  • 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);
    }

}

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

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

相关文章

大厂晋升学习方法一:海绵学习法

早晨 30 分钟 首先&#xff0c;我们可以把起床的闹钟提前 30 分钟&#xff0c;比如原来 07:30 的闹钟可以改为 07:00。不用担心提前 30 分钟起床会影响休息质量&#xff0c;习惯以后&#xff0c;早起 30 分钟不但不会影响一天的精力&#xff0c;甚至可能反而让人更有精神。早起…

leetcode 二分查找·系统掌握 猜数字大小

题目&#xff1a; 题解&#xff1a; 使用最经典普通二分即可 int guessNumber(int n) {long l0,rn,mid;while(l<r){mid(rl)>>1;if(guess(mid)0)return mid;else if(guess(mid)-1)rmid-1;else lmid1;}return 0;}

kylin v10 离线安装chrome centos离线安装chrome linux离线安装谷歌浏览器

1. 先用自己联网的计算机&#xff0c;下载离线安装包&#xff0c;浏览器输入链接下载安装包&#xff1a; https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm 1.2. 信创环境不用执行下面&#xff0c;因为没网 1.3. 若为阿里云服务器&#xff0c;或服…

基于自主发明专利的杰林码哈希算法、对称加密算法和无损压缩算法的可文件追踪管控且支持linux和windows的文件压缩包工具SDK和JLM PACK软件介绍

基于自主发明专利的杰林码哈希算法、对称加密算法和无损压缩算法的可文件追踪管控且支持linux和windows的文件压缩包工具SDK1.0版发布&#xff0c;下载链接为&#xff1a; JLM PACK SDK和软件的官方网站 注意测试授权证书yesine_jlmpack_test.license的有效期到2024年12月&am…

【AI副业指南】用AI做心理测试图文号,单月稳赚7000+(附详细教程)

大家好&#xff0c;我是画画的小强 因为AI的出现&#xff0c;很多自媒体副业项目变得简单容易上手&#xff0c;也给予很多想要在业余时间变现的朋友更丰富的项目选择。 今天分享的赛道绝对颠覆大家的认知&#xff0c;本期将叫大家如何通过AI在自媒体平台上做心理测试账号。 …

湖南(焦点小组)源点咨询 用户座谈会现场访谈之一点心得

湖南源点调研认为&#xff1a;访谈前&#xff0c;务必先明确最核心的目的。 一些初学的同学都知道&#xff0c;访谈首先要准备一个提纲&#xff0c;的确这是一个基础工作。但我在实际情况更常见到的是&#xff1a; 访谈提纲看似全面&#xff0c;各种维度都去问&#xff0c;但…

防晒服饰「进化论」:从标准到当代人的OOTD

【潮汐商业评论/原创】 “我&#xff0c;我老公&#xff0c;我儿子&#xff0c;身上80%都被‘防晒’承包了。我怕光老化&#xff0c;我老公怕热&#xff0c;我儿子容易晒脱皮。买蕉下&#xff0c;是因为看重它的标准&#xff0c;而且此‘防晒’已非彼‘防晒’了。”宝妈Timy正…

使用VisualBox+Vagrant搭建Centos虚拟机环境

1.下载并安装VisualBox&#xff1b; 2.下载并安装Vagrant; 3.打开cmd窗口&#xff0c;执行命令vagrant init centos/7&#xff0c;初始化centos环境&#xff0c;该步骤受网络带宽影响&#xff0c;可能挂级30分钟到1个小时&#xff1b; 4.启动虚拟机&#xff1a;vagrant up&…

如何使用LiveTargetsFinder生成实时活动主机URL列表

关于LiveTargetsFinder LiveTargetsFinder是一款功能强大的实时活动主机生成工具&#xff0c;该工具可以为广大研究人员以自动化的形式生成可供分析和测试的实时活动主机URL列表&#xff0c;并通过MassDNS、Masscan和Nmap自动过滤出无法访问的主机。 我们只需要提供一个域名作…

使用mysql的binlog进行数据恢复

1.mysql安装环境 在你本地电脑windows上建一个和生产环境一样的mysql版本 我的是 mysql5.7.43 安装教程可以自行上网搜&#xff08;这里不做介绍&#xff09; 可参考&#xff1a; 1.1安装路径 我的mysql安装路径&#xff1a; D:\mysql\mysql-5.7.43-winx64\bin * 1.2my.in…

小型超声波清洗机真的有用吗?深入测评四款优质精品,亮点多多

超声波洗眼镜机能够彻底清洁眼镜&#xff0c;去除顽固污渍和灰尘&#xff0c;其次是操作简便&#xff0c;对比传统的清洗方式用时短、效率高&#xff0c;避免了手动的麻烦&#xff0c;于是有很多眼镜使用者都选择了超声波清洗机。但由于目前超声波清洗机型号众多&#xff0c;如…

Erpnext安装

Erpnext安装 环境要求 Ubuntu 23.04 x86_64 Python 3.10.12 pip 23.0.1 node v18.16.0 npm 9.5.1 yarn 1.22.22 MariaDB 10.11.2 Redis 7.0.8 wkhtmltox 0.12.6.1 bench 5.22.6环境安装 Reids 安装 // 安装7.0.8 也可不指定版本 直接执行 sudo apt install redis-server s…

AI创作在论文写作中扮演什么角色?

近年来&#xff0c;随着科技的快速发展&#xff0c;AI已经逐渐渗透到了生活中的方方面面&#xff0c;其中也包含着学术领域。 作为学生党&#xff0c;你是否还在为期末论文&#xff0c;大学生实践报告而发愁&#xff1f; 有了这些AI写作神器&#xff0c;大学生们再也不用在期…

ubuntu多版本cuda如何指定cuda版本

本文作者&#xff1a; slience_me ubuntu多版本cuda如何指定cuda版本 文章目录 ubuntu多版本cuda如何指定cuda版本1. 关于cuda设置1.1 查看当前安装的 CUDA 版本1.2 下载并安装所需的 CUDA 版本1.3 设置环境变量1.4 验证切换1.5 安装对应的 NVIDIA 驱动程序 2. 设置环境变量2.1…

Go-知识并发控制mutex

Go-知识并发控制mutex 1. 介绍2. 数据结构2.1 Mutex 结构体2.2 Mutex 方法 3. 加锁解锁过程3.1 简单加锁3.2 加锁被阻塞3.3 简单解锁3.4 解锁并唤醒协程 4. 自旋过程4.1 什么是自旋4.2 自旋条件4.3 自旋的优势4.4 自旋的问题 5. Mutex 模式5.1 Normal 模式5.2 Starving 模式(饥…

MUR20100DC-ASEMI智能AI应用MUR20100DC

编辑&#xff1a;ll MUR20100DC-ASEMI智能AI应用MUR20100DC 型号&#xff1a;MUR20100DC 品牌&#xff1a;ASEMI 封装&#xff1a;TO-263 恢复时间&#xff1a;35ns 最大平均正向电流&#xff08;IF&#xff09;&#xff1a;20A 最大循环峰值反向电压&#xff08;VRRM&a…

设计软件有哪些?粒子插件篇,渲染100邀请码1a12

设计师常常需要设计特效&#xff0c;而粒子系统是必不可少的&#xff0c;这次我们简单介绍一些粒子插件。 1、ComplexFresnel ComplexFresnel插件是一款用于计算机图形渲染中的增强型菲涅尔效应模拟工具。它扩展了传统的菲涅尔效应模型&#xff0c;考虑了更多的光学参数&…

嵌入式PID算法总结

参考 CMSIS-DSP PID 控制 学习历程 最开始&#xff0c;根据公式自己写PID算法&#xff1b;后面找资料时&#xff0c;发现wiki上介绍PID时&#xff0c;提供了伪代码&#xff0c;直接照着翻译一下就可用了&#xff1b;然后想要实现一个自己的PID库&#xff08;能够实现多级PID…

小程序大作为|小程序开发详细流程,新手也能轻松掌握

随着移动互联网的快速发展&#xff0c;小程序作为一种轻量级应用&#xff0c;因其无需下载安装、即点即用、用完即走的特点&#xff0c;受到了广大用户的青睐。那么开发小程序都有哪些开发流程呢&#xff1f;可以用哪种方式开发&#xff1f;选择合适的开发方式&#xff0c;一起…

网络与协议安全复习 - 电子邮件安全

文章目录 PGP(Pretty Good Privacy)功能 S/MIME(Secure/Multipurpose Internet Mail Extensions)DKIM(Domain Keys Identified Mail) PGP(Pretty Good Privacy) 使用符号&#xff1a; Ks&#xff1a;会话密钥、KRa&#xff1a;A 的私钥、KUa&#xff1a;A 的公钥、EP&#xff…