LeetCode面试题02.07.链表相交

面试题02.07.链表相交

两种解题思路

  • 面试题02.07.链表相交
    • 一、双指针
    • 二、哈希集合

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

一、双指针

这道题简单来说,就是求两个链表交点节点的指针

这里注意:交点不是数值相等,而是指针相等

为了方便举例,假设节点元素数值相等,则节点指针相等

看如下两个链表,如前curA指向链表A的头结点,curB指向链表B的头结点

在这里插入图片描述

我们求出两个链表的长度,并求出两个链表长度的差值,然后让curA移动到和curB对齐的位置,如图所示

在这里插入图片描述

此时我们就可以比较curA和curB是否相同,如果不相同,同时向后移动curA和curB,如果遇到curA==curB,则找到交点

否则循环退出,返回空指针

    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {ListNode curA = headA;ListNode curB = headB;int lenA = 0,lenB = 0;//求链表A的长度while(curA!=null){lenA++;curA = curA.next;}//求链表B的长度while(curB!=null){lenB++;curB = curB.next;}curA = headA;curB = headB;//让curA成为最长链表的头,lenA为其长度if(lenB>lenA){//交换lenA和lenB的值int tempLen = 0;tempLen = lenA;lenA = lenB;lenB = tempLen;//交换curA和curB指针ListNode tempNode = curA;curA = curB;curB = tempNode;}//求长度差int gap = lenA-lenB;//让curA和curB对齐while(gap>0){curA = curA.next;gap--;}//遍历curA和curB,遇见相同val值则直接返回while(curA!=null){//注意是指针相等if(curA==curB){return curA;}curA = curA.next;curB = curB.next;}return null;}

二、哈希集合

判断两个链表是否相交,可以使用哈希集合存储链表节点

首先遍历链表headA,并将链表headA中的每个节点加入到哈希集合中

然后遍历链表headB,对于遍历到的每个节点,判断该节点是否在哈希集合中

  • 如果当前节点不在哈希集合中,则继续遍历下一个节点
  • 如果当前节点在哈希集合中,则后面的节点都在哈希集合中,即从当前节点开始的所有节点都在两个链表的相交部分,因此在链表headB中遍历到的第一个在哈希集合中的节点就是两个链表相交的节点,返回该节点
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {Set<ListNode>visited = new HashSet<ListNode>();ListNode temp = headA;while(temp!=null){visited.add(temp);temp = temp.next;}temp = headB;while(temp!=null){if(visited.contains(temp)){return temp;}temp = temp.next;}return null;}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何用双指针法解决力扣“反转单词前缀”问题

本篇博客会讲解力扣“2000. 反转单词前缀”的解题思路&#xff0c;这是题目链接。 本题的思路是&#xff1a;先调用strchr函数&#xff0c;在字符串word中查找字符ch&#xff0c;若找到了&#xff0c;则会返回一个非空指针p&#xff0c;指向ch在word中的位置。为了反转从word到…

甲板上的战舰(力扣)递归 JAVA

给你一个大小为 m x n 的矩阵 board 表示甲板&#xff0c;其中&#xff0c;每个单元格可以是一艘战舰 ‘X’ 或者是一个空位 ‘.’ &#xff0c;返回在甲板 board 上放置的 战舰 的数量。 战舰 只能水平或者垂直放置在 board 上。换句话说&#xff0c;战舰只能按 1 x k&#xf…

数学建模常用模型(九) :偏最小二乘回归分析

数学建模常用模型&#xff08;九&#xff09; &#xff1a;偏最小二乘回归分析 偏最小二乘回归&#xff08;Partial Least Squares Regression&#xff0c;PLS Regression&#xff09;是一种常用的统计建模方法&#xff0c;用于解决多元线性回归中自变量间高度相关的问题。在偏…

Java:控制流程 + 数组 详解(原理 + 用法 + 例子)

目录 控制流程块作用域if 条件语句for while 循环switch 多重选择break continue 中断控制流程语句 大数值数组多维数组字符串类型数组Array.sort() 数组排序for each 循环 控制流程 块作用域 块&#xff08;即复合语句&#xff09;是指由一对大括号{}括起来的若干条简单的 Ja…

Linux 系统编程-开发环境(二)

目录 7 压缩包管理 7.1 tar 7.2 rar 7.3 zip 8 进程管理 8.1 who 8.2 ps 8.3 jobs 8.4 fg 8.5 bg 8.6 kill 8.7 env 8.8 top 9 用户管理 9.1 创建用户 9.2 设置用户组 9.3 设置密码 9.4 切换用户 9.5 root用户 9.6 删除用户 10 网络管理 10.1 i…

Offset Explorer2 监视kafka的利器

kafka作为一个生产者和消费者集为一体的框架&#xff0c;消费者必须一直保持打开的状态&#xff0c;并且每隔一段时间接收一次数据&#xff0c;才能够保持生产者放入的数据及时被处理掉&#xff0c;而生产者则可以每隔一段时间发送一波数据&#xff0c;这样消费者就能够接收到了…

一篇文章带你用Jenkins和Kubernetes搭建DevOps平台

JenkinsKubernetes实现DevOps DevOps 介绍Jenkins环境准备准备JDK下载jdk安装jdk配置jdk环境变量 准备maven下载maven解压maven配置maven配置maven环境变量 安装Docker安装git 安装Jenkins初始化jenkins准备代码仓库和docker镜像仓库准备Kubernetes准备java项目搭建DevOps创建代…

Nacos服务注册和配置中心(Config,Eureka,Bus)1

SCA(Spring Cloud Alibaba)核心组件 Spring Cloud是若干个框架的集合&#xff0c;包括spring-cloud-config、spring-cloud-bus等近20个子项目&#xff0c;提供了服务治理、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列、配置管理等领域的解决方案,Spring C…

iOS APP外包开发的语言比较

iOS APP是Apple公司运行在iPhone手机上的APP&#xff0c;开发这样的APP有两种开发语言可以选择&#xff0c;都是由Apple公司提供的语言。其中Objective-C使用时间相对较长&#xff0c;有历史兼容考虑&#xff0c;而Swift是新的开发语言&#xff0c;更符合近些年开发语言的发展理…

Maven

Maven 1. Maven简介2. Maven安装搭建(windows)2.1 下载maven2.2 安装配置maven2.3 配置maven本地仓库 3. Maven安装搭建(linux)3.1 下载maven3.2 安装配置maven3.3 编辑 settings.xml 文件3.4 添加 maven 环境变量内容 4. IntelliJ IDEA创建web项目4.1 创建项目4.2 创建源码目录…

Nginx基础(复习理论篇)

一、Nginx基本概念 1、Nginx是什么 Nginx是一个高性能的Http和反向代理服务器&#xff0c;其特点是占有内存少&#xff0c;并发能力强&#xff0c;事实上Nginx的并发能力确实在同类型的网页服务器中表现较好。 Nginx专为性能优化而开发&#xff0c;性能是其最重要的考量&…

matlab中画有重影的机器人运动过程【给另一个机器人设置透明度】

1、前言如题 2、参考连接如下 How to plot two moving robot in the same figure and change one of them transparency&#xff1f; - MATLAB Answers - MATLAB Central (mathworks.cn)3、代码&#xff1a;【找到figure中对应对象并设置属性】 % Create two instances of a…