判断链表是否相交并找出交点

问题概述

单链表定义如下:

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

编写程序, 找出两个链表的交点
在这里插入图片描述
如图所示,链表 A 和链表 B 在节点 8 处相交。

算法思路

首先确定一个事情:

如果两个链表有交点, 那么这两个链表的尾节点一定是相等的。

现在不仅需要判断是否有交点, 还需要找出这个节点。继续观察图形, 可以得出,如果两个链表相交,那么较长链表在往后移动 (∣length1−length2∣|length1-length2|length1length2)个长度单位后,两个链表往后查找的速度一致,即可以用判断两个节点是否相等的方式来判断交点的位置了。
代码实现:

public ListNode getIntersectionNode(ListNode headA, ListNode headB) {if (headA==null||headB==null) {return null;}int l1 = getListNodeLength(headA);int l2 = getListNodeLength(headB);boolean aLargerThanB = l1>l2;//可以知道两个链表的长度int abs = aLargerThanB?(l1-l2):(l2-l1);if (abs!=0) {if (aLargerThanB) {while(abs>0) {headA = headA.next;abs--;}}else{while(abs>0) {headB = headB.next;abs--;}}}while (headA!=null) {if (headA==headB) {return headA;}headA = headA.next;headB = headB.next;}return null;}public int getListNodeLength(ListNode head) {int length = 0;while(head!=null) {length++;head = head.next;}return length;}

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

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

相关文章

兄弟3150cdn更换硒鼓_耗材知多点:一体式硒鼓及分离式硒鼓

相信第一次接触硒鼓的小伙伴们,会比较诧异为什么有些硒鼓可以直接装机使用,而有些硒鼓,却需要两个部件组合起来或分别装机才能正常使用。今天就带大家来了解一下什么是一体式硒鼓,什么又是分离式硒鼓。①一体式硒鼓:以…

Java IO流之PrintStream分析

简介 PrintStream继承了FilterOutputStream.是"装饰类"的一种,所以属于字节流体系中(与PrintStream相似的流PrintWriter继承于Writer,属于字符流体系中),为其他的输出流添加功能.使它们能够方便打印各种数据值的表示形式.此外,值得注意的是: 与其他流不同的是,Prin…

bs4爬取的时候有两个标签相同_10分钟用Python爬取最近很火的复联4影评

《复仇者联盟4:终局之战》已经上映快三个星期了,全球票房破24亿美元,国内票房破40亿人民币。虽然现在热度逐渐下降,但是我们还是恬不知耻地来蹭一蹭热度。上映伊始《复联4》的豆瓣评分曾破了9分。后来持续走低,现在《复…

RabbitMQ 基本概念与高级特性

文章目录1. 什么是消息队列1.1 消息队列概述1.2 使用消息队列的优势1.3 使用消息队列的劣势1.4 常见的消息队列产品对比2. RabbitMQ 基本概念2.1 RabbitMQ 概述2.2 RabbitMQ 的概念模型2.2.1 Message2.2.2 Publisher2.2.3 Exchange2.2.4 Binding2.2.5 Queue2.2.6 Connection2.2…

HTTP 和 SOCKET 的区别

HTTP 和 SOCKET 的区别 要弄明白 http 和 socket 首先要熟悉网络七层:物 数 网 传 会 表 应,如图1 如图1 HTTP 协议:超文本传输协议,对应于应用层,用于如何封装数据. TCP/UDP 协议:传输控制协议,对应于传输层&…

java 8进制串转中文_为什么不能用中文进行编程?而英文就可以

前些天大雄无意间听见几个线下班小伙伴说真的是无(te)意(di)的“我要补英文”“对,英文真的很重要”“如果编码用中文就好了”...听见这大雄就不淡定了中文代码小伙伴确定能够搞懂??首先我们大概的看一下中文编码:你以为会写中文写…

MATLAB学习笔记(一)求解三阶微分方程

一、求解三阶微分方程 对于多变量三阶微分方程求解问题,这里介绍一种求解方法。 例题如下: 对于以上方程,给定边界条件,,,,,。求解和的表达式。 二、解题步骤 (1&…

axure 内部框架内容下滑_Axure教程:转盘抽奖交互原型

本文跟大家分享,如何使用axure制作转盘抽奖交互原型,不带登录流程。效果如下:抽奖流程一、主要内容(1)主要元件:动态面板(2)重点:旋转交互、随机函数、触发动作。(3)难点:通过停止位置判断抽奖结果(4)涉及函…

日志打印的8种级别(很详细)

日志打印的8种级别(很详细) 日志的输出都是分级别的,不同的设置不同的场合打印不同的日志。下面拿最普遍用的Log4j日志框架来做个日志级别的说明,其他大同小异。 Log4j的级别类org.apache.log4j.Level里面定义了日志级别&#x…

identity_insert 如何改为on_十分钟教你如何快速提高Laya构建速度,还不快来康康?...

前言如何快速提高Laya构建速度 微信小游戏推出之后,很多公司也相应的进入到微信小游戏这个领域,现在市场上的游戏开发引擎,如Cocos、Egret、Laya都对小游戏有了很好的兼容性。而在实际开发中,如何提高Laya的构建速度,是…

二下语文书电子课本_小学生语文成绩好,不是靠补课,把课本吃透,才是高效学习方法...

关注语文教学发展,解决语文学习困惑。对于基础差、语文学习能力差的同学,我不建议去补课。但是家长说,不补课怎么办呢?我们也没有时间和耐心去给孩子辅导,又怕讲错了,还是让老师讲好。尽管家长们有这个意识…

Java面试——MyBatis系列总结

文章目录: 1.MyBatis是什么? 2.JDBC编程有哪些缺陷?MyBatis又是如何改进的? 3.MyBatis与Hibernate的区别在哪? 4.MyBatis的优缺点 5.请说说MyBatis的工作原理 6.MyBatis的架构设计是怎样的? 7.#{}和…

Java面试——Spring系列总结

文章目录: 1.什么是Spring? 2.Spring由哪些模块组成? 3.Spring中都用到了哪些设计模式? 4.什么是Spring IOC容器?有什么作用? 5.Spring IoC的实现机制 6.BeanFactory 和 ApplicationContext有什么区别…

Spring bean 不被 GC 的真正原因

概述 自从开始接触 Spring 之后,一直以来都在思考一个问题,在 Spring 应用的运行过程中,为什么这些 bean 不会被回收? 今天深入探究了这个问题之后,才有了答案。 思考点 大家都知道,一个 bean 会不会被回…

vts传感器采取船舶的_详解虎门大桥监测系统:传感器与物联网功不可没

来源:传感器专家网近日,虎门大桥“虎躯一震”给全国人民来了个“深呼吸”。虎门大桥是广东沿海地区重要的交通枢纽,始建于1992年,1997年通车至今,大桥一直都十分平稳。但在5月5日下午,虎门大桥发生异常抖动…

MySQL 排名函数.md

概述 MySQL 自带的排名的函数,主要有: row_number()rank()dense_rank()ntile() 测试数据 测试数据如下所示: row_number() 函数 用法如下: SELECT row_number() OVER (ORDER BY Salary DESC) row_num,Salary FROMEmployee查…

深度学习auc_机器学习集成学习与模型融合!

↑↑↑关注后"星标"Datawhale每日干货 & 每月组队学习,不错过Datawhale干货 作者:李祖贤,深圳大学,Datawhale高校群成员对比过kaggle比赛上面的top10的模型,除了深度学习以外的模型基本上都是集成学习的…

数控车椭圆编程实例带图_数控车床编程教程,图文实例详解

一、数控车编程特点(1) 可以采用绝对值编程(用X、Z表示)、增量值编程(用U、W表示)或者二者混合编程。(2) 直径方向(X方向) 系统默认为直径编程,也可以采用半径编程,但必须更改系统设定。(3) X向的脉冲当量应取Z向的一半。(4)采用固定循环,简化…

参考文献起止页码怎么写_毕业论文文献综述不会写?快来看看这篇文章(附含通用模板)...

文献综述是对所研究主题的现状进行客观的叙述和评论、寻求新的研究突破点。一个资料全面、研究深入的综述不仅可以帮助作者确立毕业论文的选题,还可以为论文的深入研究提供有力的支撑。本文分享一份"毕业论文文献综述万能模板",以供参考。一、文献综述的基…

常用并发工具类(线程池)

文章目录概述ThreadPoolExecutorThreadPoolExecutor 的主要属性Worker 主要属性线程池的状态线程池的状态流转线程池提交任务的执行流程线程数量的设置线程池的种类FixedThreadPoolCachedThreadPoolSingleThreadExecutorScheduledThreadPoolExecutorSingleThreadScheduledExecu…