剑指 Offer 52. 两个链表的第一个公共节点

剑指 Offer 52. 两个链表的第一个公共节点
输入两个链表,找出它们的第一个公共节点。
在这里插入图片描述
思想:双指针法,浪漫相遇

public static ListNode getIntersectionNode(ListNode headA, ListNode headB) {ListNode pointA = headA;ListNode pointB = headB;while(pointA!=pointB){pointA =( pointA!=null? pointA.next:headB);pointB =( pointB!=null? pointB.next:headA);}return pointA;}

正确的测试用例:

public static void main(String[] args) {/*** 输入:* 第一行为链表A的所有元素4 1 8 4 5* 第二行为链表B的所有元素5 0 1 8 4 5* 输出:* Reference of the node with value = 8*/ListNode headA = new ListNode(0,null);ListNode pre = headA;System.out.println("Enter a space separated list of numbers:listA = ");Scanner sc = new Scanner(System.in);String line1 = sc.nextLine();System.out.println("Enter a space separated list of numbers:listB =");String line2 = sc.nextLine();System.out.println("skipA = ");int skipA = sc.nextInt();System.out.println("skipB = ");int skipB = sc.nextInt();Scanner sc1 = new Scanner(line1);Scanner sc2 = new Scanner(line2);while (sc1.hasNextInt()){ListNode curr = new ListNode(sc1.nextInt(), null);pre.next = curr;pre = curr;}headA = headA.next;//将首结点下移一个代表真正的首结点System.out.println(headA.toString());ListNode headB = new ListNode(0,null);pre = headB;while (sc2.hasNextInt()){ListNode curr = new ListNode(sc2.nextInt(), null);pre.next = curr;pre = curr;}headB = headB.next;//将首结点下移一个代表真正的首结点ListNode nodeA = headA;ListNode nodeB = headB;//根据skipA和skipB让listA和listB在该相交的结点相交for (int a = skipA; a > 0; a--) {nodeA = nodeA.next;}for (int b = skipB-1; b > 0; b--) {nodeB = nodeB.next;}nodeB.next = nodeA;System.out.println(headB.toString());System.out.println("Reference of the node with value = "+getIntersectionNode(headA, headB).val);}

在这里插入图片描述

这里主要是想记录测试代码中遇到的一些bug,按以下的方法测试会永远得出null的结果,因为headA引用和headB引用永远没有交点,即使结点值相同,但他们实际所指的地址并不相同。
还有在设计链表的时候也不要初始为null,null在内存中并没有分配实际的内存地址,会报空指针异常。

错误的测试代码及结果:

public static void main(String[] args) {/*** 输入:* 第一行为链表A的所有元素4 1 8 4 5* 第二行为链表B的所有元素5 0 1 8 4 5* 输出:* Reference of the node with value = 8*/ListNode headA = new ListNode(0,null);ListNode pre = headA;System.out.println("Enter a space separated list of numbers:");Scanner sc = new Scanner(System.in);String line1 = sc.nextLine();System.out.println("Enter a space separated list of numbers:");String line2 = sc.nextLine();Scanner sc1 = new Scanner(line1);Scanner sc2 = new Scanner(line2);while (sc1.hasNextInt()){ListNode curr = new ListNode(sc1.nextInt(), null);pre.next = curr;pre = curr;}headA = headA.next;//将首结点下移一个代表真正的首结点System.out.println(headA.toString());ListNode headB = new ListNode(0,null);pre = headB;while (sc2.hasNextInt()){ListNode curr = new ListNode(sc2.nextInt(), null);pre.next = curr;pre = curr;}headB = headB.next;//将首结点下移一个代表真正的首结点System.out.println(headB.toString());System.out.println("Reference of the node with value = "+getIntersectionNode(headA, headB).val);}

在这里插入图片描述
因为这个测试方法返回的永远是null,所以报了空指针异常。

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

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

相关文章

IDEA查看源码时总是出现.class而不是.java源码(解决办法)

自己安装的JDK8里面就有源码,就是图中的src.zip,我还傻乎乎的跑去下。 我参考下面这个链接解决了这个问题: https://www.it610.com/article/1283023085871579136.htm 特别注意其中的一句话:把SDKs中多余的jdk删掉留一个就好&am…

ASP“.NET研究”.NET中的认证与授权

用户认证 .net提供了3种用户认证的方式,分别是Windows,Forms,Passport。这几种形式的定义可以在网站根目录下Web.config中的authentication节点中看见。Windows是默认的验证形式,它是根据机器的访问权限来判断的。Passport是微软提供的一种验…

用NuGet掌管你的Vi“.NET研究”sual Studio扩展

如果你使用Visual Studio 2010,那么 NuGet 可以使你的生活更加美好。当你项目里要引用到的一些库时候,比如JQuery 库或者 NHibernate, NUnit, log4net 你就可以考虑使用NuGet。它可以辅助你安装或者更新这些库。 当然我不得不继续说下去从安装到使用&…

cmd窗口使用python提示“Python not found”,可能是环境变量配置的原因

问题1 打开命令行窗口使用python命令无法直接进入python环境,但是从python的安装目录下就可以进去 问题原因 没有配置系统环境变量,需要把python安装路径添加到path环境变量中 环境变量配置,可以参考菜鸟教程 问题2 配置了环境变量之后…

无法打开caffe.pb.h, no such file or directory错误

问题: 使用VS2013生成caffe解决方案的过程中,出现 无法打开caffe.pb.h,no such file or directory ,解决方案 : 参考博客:[caffe] 无法打开caffe.pb.h, no such file or directory错误 博客地址:https://b…

NuGet Error:Unable to find version ‘0.3.3.0‘ of package ‘glog.overlay-x64_v120_Release_dynamic‘.

问题: 使用VS2013生成caffe解决方案时,报错NuGet Error:Unable to find version 0.3.3.0 of package glog.overlay-x64_v120_Release_dynamic. 解决方案: 一、参考文章里面的回答: 链接:NuGet error while buildin…

【caffe】找不到gpu/mxGPUArray.h

问题原因: Microsoft 的github貌似更新了matcaffe中的caffe_.cpp文件,第十六行添加了对gpu/mxGPUArray.h的引用 解决方法 是将本机Matlab的该文件夹复制到Caffe项目文件的对应位置。 具体方法 在你的matlab文件下面搜索mxGPUArray.h文件&#xff0c…

4 error C2220: 警告被视为错误 - 没有生成“object”文件 (..\..\src\caffe\util\math_functions.cpp)

在VS2013上编译caffe时遇到如下问题: 错误原因: 原因是该文件的代码页为英文,而我们系统中的代码页为中文。 解决方法: 将源码转化为正确的编码方式 用VS2013打开对应的文档,文件->打开->选择该cpp&#xff0…

技术人员如何转型为产品经理

技术人员如何转型为产品经理不知道是不是所有的公司开会都是这样,以时间长短作为衡量会议重要性的标准。周扬被郭姐姐叫去开会,9点半开始,直到快12点了,他才满脸愁容地回到办公室。放下笔记本,周扬站到办公室中间&…

错误 4 error C2220: 警告被视为错误 - 没有生成“object”文件

报错内容: 复制第一行的错误内容: 错误 4 error C2220: 警告被视为错误 - 没有生成“object”文件 D:\Program Files\NugetPackages\boost.1.59.0.0\lib\native\include\boost\format\alt_sstream_impl.hpp 1 1 libcaffe 复制会发现他给出了没有生成obje…

未定义变量或函数caffe_()

该错误是使用matlab 运行classification_demo产生的 三要素仔细检查 一、添加系统环境变量 把 \caffe-master\Build\x64\Release添加到系统环境变量中 二、添加 Caffe 路径 打开 MATLAB,在命令窗口输入pathtool,添加 Caffe 路径,主要是添…

围观窗体与组件03 - 零基础入门学习Delphi25

围观窗体与组件03 让编程改变世界 Change the world by program 围观按钮型组件 Button、BitBtn、SpeedButton的一些区别 区别一:Button 不能显示位图 区别二:SpeedButton 没有焦点,一般用于工具栏按钮 区别三:BitBtn 有 kind…

LaTeX的安装教程及问题记录

安装教程 我的安装过程参考的博客: LaTeX的安装教程(Texlive 2020 TeX studio) 遇到的问题 TLUtils::install_packages: Failed to install texlive.infra.win32 Installation failed. 解决办法: 将安装包解压路径全部放置在英…

Extra }, or forgotten lendgroup. \makecover

问题: 下载UESTC 的硕士学位论文Latex模板编译后,遇到报错: 产生原因: 问题产生原因,是我偶然间发现,在该语句前面部分的导言区错误表示了&符号。 也就是说,latex中需要注意特殊符号的表…

QTP测试脚本

今天看了QTP参数化写了第一个测试脚本,居然能成功运行了,挺有成就感的,写下来了,嘿嘿……,下面进行详细分析: 转载于:https://www.cnblogs.com/hyzhou/archive/2011/11/11/2245904.html

Undefined control sequence. \makecover

问题: 今天刚下载了github上2021年的UESTC硕士学位论文latex模板,直接编译\makecover报错 产生原因: 在begin{document}前面的内容还缺少字段 解决办法: 添加以下字段 \maintitle \degree 专硕需要把master改成promatesr&am…

Latex的subcaption横向插入两张子图的的用法

用法示例 \begin{figure}[htbp]\centering\subcaptionbox{subtitle1\label{tex2kidliuxiangliang}}{\includegraphics[width6.8cm]{tex2kidliuxiangliang.jpg} }\hfill % 是为了让多幅图在一行均匀分布(不加的效果是都挤在中间)\subcaptionbox{subtitl…

集中管理:领导者,不能不考虑的几件事之——“挖”出来的无限可能

原文链接:http://www.betasoft.com.cn/laosun/2011-11-14/2054.html 我们都知道,分布式部署管理模式有很多集中管理所无法比拟的优势,但也有其自身所无可避免的缺陷。随着网络基础设施规模和业务规模的扩大,IT运维数据信息的管理和…

word中如何对公式插入题注和引用

编辑公式 先在对应行把公式编辑好,如下图所示 插入题注 1、在公式前按一次“Tab”键,公式后编号前再按一次“Tab”键 2、将光标放在公式的最右边,按下 CtrlAltEnter,出现新的回车键 3、我需要设置的题注格式类似于 (4-2) 这种…

latex模板章节序号标签加粗

问题 章节标题序号(比如3.2,3.2.2)加粗 修改方法 1、打开latex模板的.cls文件 2、找到定义章节序号格式的地方 3、添加\bfseries,这个指令就是加粗的意思 我修改的模板是uestc的thesis,对应需要修改的位置就在第145行&#xff…