剑指 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,一经查实,立即删除!

相关文章

Android 创世纪 第二天

第二天,google说,荒芜要被开垦,系统便运作了,它是linux。 --xxx 荒蛮大地就要变得肥沃,linux已经运行起来了。。。。 linux就不多讲了,这里只讲讲被google大刀阔斧改了内核后的linux。 第一天最后&#xff…

“.NET研究”谈谈C# 4.0新特性“缺省参数”的实现

C#4.0关于缺省参数的新特性,相信大家都不会陌生。所谓缺省参数,顾名思义,就是在声明方法的某个参数的时候为之指定一个默认值,在调用该方法的时候如果采用该默认值,你就无须指定该参数。和很多语言层面特性&#xff08…

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 配置了环境变量之后…

vim 高亮显示php代码

vim是一款跨平台编辑器,可以在linux下使用,也可以在windows下使用高亮显示php代码 进入vim后,在普通模式下输入如下命令,开启php代码高亮显示 WwwChinazcom :syntax enable :source $VIMRUNTIME/syntax/php.vim转载于:https://w…

无法打开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…

MusicXML 3.0 (20) - 钢琴踏板

<?xml version"1.0" encoding"UTF-8" standalone"no"?> <!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 3.0 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd"> <score-partwis…

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

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

【caffe】找不到gpu/mxGPUArray.h

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

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

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

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

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

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

报错内容&#xff1a; 复制第一行的错误内容&#xff1a; 错误 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…

【转】 看IT人才最容易犯的17个错误

记得刚参加工作时&#xff08;那是97年&#xff09;&#xff0c;中国的IT刚刚兴起&#xff0c;那时&#xff0c;作为一个IT人士是一件很光荣的事&#xff0c;而那时的我正在做电气和电子相关的工作。99年第一次跳 槽&#xff0c;进入了IT行业做软件开发。至今&#xff0c;中国的…

未定义变量或函数caffe_()

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

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

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

windows下使用Caffe框架和matlab实现SRCNN官方代码的步骤

步骤 step1 搭建caffe环境 在windows系统上搭建caffe环境&#xff0c;并配置matlab接口&#xff08;需要下载 caffe-master.zip 以及 VS2013 &#xff09; 我的环境为&#xff1a;windows10 caffe-master VS2013旗舰版 matlab R2018b 安装步骤推荐参考&#xff1a; 博客1…

OCP之5 管理数据库存储结构

存储结构 一个数据库可划分为多个称为表空间的逻辑存储单元。每个表空间可以包含很多Oracle 逻辑数据块。DB_BLOCK_SIZE 参数指定了逻辑块的大小。逻辑块的大小介于2 KB 到 32 KB 之间&#xff0c;默认大小为8 KB。特定数目的相邻逻辑块构成了一个区。为特定逻辑结构分配的一组…