找两个链表第一次指针相同的地方
 
 
想法:(本来是没有的,因为没读懂题目描述= =)
1.两个指针,长的先走(长减短相差的长度)这么多的步数,然后就可以开始比较指针,直到指向为空,期间如果指针相同,返回该节点,如果链表未相交,则返回的是null
 
可是这是链表啊!没法知道长度!!!
 
 
2.hashset
将长链表的元素放入set,从短链表的头部开始,依次向后判断该元素是否在set中,如果是则表明两个链表相交,返回该点,若到最后都没有,则两个链表不相交,返回null
 1 /**
2 * Definition for singly-linked list.
3 * public class ListNode {
4 * int val;
5 * ListNode next;
6 * ListNode(int x) {
7 * val = x;
8 * next = null;
9 * }
10 * }
11 */
12 public class Solution {
13 public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
14 if(headA == null||headB == null){
15 return null;
16 }
17 Set setList = new HashSet<>();
18 while(headA!=null){
19 setList.add(headA);
20 headA = headA.next;
21 }//将一链表的元素放入set
22 while(headB!=null){
23 if(setList.contains(headB)){
24 return headB;
25 }
26 headB = headB.next;
27 }//从另一链表的头部开始,依次向后判断该元素是否在set中,如果是则表明两个链表相交,返回该点,若到最后都没有,则两个链表不相交,返回null
28 return null;
29 }
30 }
 
3.双指针根据等长原理,指针相遇时返回该点
如果像左边情况一样,两链表相加,长链表长度6,短链表长度4,相交长度2。甲从长链表头开始走,乙从短链表头开始走,甲乙走到空时从另一个链表的头开始走,甲走了4+2+2=乙走了2+2+4,之后甲乙相遇,返回该点,如果向右边情况一样,两个长度不等且不相交的链表,甲走6+3=乙走3+6,之后甲乙相遇,在null,返回null。
 
 
该方法就是:
当链表 headA 和 headB 都不为空时,创建两个指针 pA 和 pB,初始时分别指向两个链表的头节点 headA 和 headB,然后将两个指针依次遍历两个链表的每个节点。具体做法如下:
 
每步操作需要同时更新指针 pA 和 pB
如果指针 pA 不为空,则将指针 pA 移到下一个节点;如果指针 pB 不为空,则将指针 pB 移到下一个节点
如果指针 pA 为空,则将指针 pA 移到链表 headB 的头节点;如果指针 pB 为空,则将指针 pB 移到链表 headA 的头节点
当指针 pA 和 pB 相遇时返回该节点。都为空时,返回 null
 
作者:dodo_1202
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 
 
 
使用for进行一个经过一次指针为空的循环(n<3){
    判断pa pb是否相遇,若相遇返回该点,若不相遇继续下面:
    pa pb向前移动
    if(pa此时为空),则pa移到headb重新开始,中间变量 n+1;
    if(pb此时为空),则pb移到heada重新开始,中间变量 n+1;
}
到了这里说明双链表不相交
返回null
 

Leecode 160.相交链表(Java 哈希表、双指针 两种方法)的更多相关文章

  1. JAVA 集合 List 分组的两种方法

    CSDN日报20170219--<程序员的沟通之痛> [技术直播]揭开人工智能神秘的面纱 程序员1月书讯 云端应用征文大赛,秀绝招,赢无人机! JAVA 集合 List 分组的两种方法 2 ...

  2. java字符串大小写转换的两种方法

    转载自:飞扬青春sina blogjava字符串大小写转换的两种方法 import java.io..* public class convertToPrintString {          pu ...

  3. 多表查询两种方法、可视化软件navicat、python操作mysql、pymysql模块

    目录 多表查询的思路 多表查询的两种方法 小知识点补充数说明 可视化软件Navicat 安装教程 数据库常用操作 多表查询练习题 python 操作MySQL pymysql补充说明 Non-grou ...

  4. mysql 清空表的两种方法

    一.Delete DELETE FROM `table`; 二.Truncate TRUNCATE `table`; 第一种方法其实就是去掉where条件,没有了条件,也就是删除掉表里面的所有记录了: ...

  5. 用python实现九九乘法表输出-两种方法

    2019-08-05 思考过程:九九乘法表需要两层循环,暂且称之为内循环和外循环,因此需要写双层循环来实现. 循环有for和while两种方式. for循环的实现 for i in range(1,1 ...

  6. Java获得键盘输入的两种方法

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...

  7. 如何删除windows服务(sc.exe删除和注册表删除两种方法)

    一.什么是Windows服务 Windows服务也称为Windows Service,它是Windows操作系统和Windows网络的基础,属于系统核心的一部分,它支持着整个Windows的各种操作. ...

  8. java连接Access数据库的两种方法

    where ziduan  in(select  ziduan from  table) 嵌套 ResultSet rs = pst.executeQuery();List list = new Ar ...

  9. Java导出Excel文件的两种方法

    将数据以Excel表格的形式导出:首先下载poi的jar包,导入项目中,或者使用maven仓库管理,在pom文件添加:<dependency>    <groupId>org. ...

  10. Java遍历文件夹的两种方法(非递归和递归)

    import java.io.File; import java.util.LinkedList; public class FileSystem {    public static int num ...

随机推荐

  1. linux kali 报错Intel VT-x

    报错原因:第一次安装虚拟机intel vt-x 处于禁用状态,没有启用 分析思路:找到 Intel vt - x 位置,并打开 .(intel - x在bios) 解决方法: 联想笔记本为例:进入bi ...

  2. php严格模式的使用

    <?php declare (strict_types = 1); namespace app\controller; use app\BaseController; use think\fac ...

  3. Word09 会计电算化节节高升office真题

    1.课程的讲解之前,先来对题目进行分析,首先需要在考生文件夹下,将Wrod素材.docx文件另存为Word.docx,后续操作均基于此文件,否则不得分. 2.这一步非常的简单,打开下载素材文件,在[文 ...

  4. JS学习- Canvas - 遮盖组合

    Compositing 组合 globalCompositeOperation这个属性设定了在画新图形时采用的遮盖策略,其值是一个标识12种遮盖方式的字符串. 值 描述 图示 source-over ...

  5. 第四章:基本Git概念(重点)

    本章通过讨论Git的基本架构组成和一些重要概念,来探讨Git的不同之处和原因. 一: 基本概念 1.版本库. 1]Git版本库只是一个简单的数据库,包含所有用来维护与管理项目的修订版本和历史记录. 2 ...

  6. SignalR基本认识以及使用

    SignalR基本认识以及使用 什么是WebSocket.SignalR WebSocket 1.WebSocket基于TCP协议,支持二进制通信,双工通信. 2.性能和并发能力更强. 3.WebSo ...

  7. 2022-3-21内部群每日三题-清辉PMP

    1.Sprint的速度低于预期,敏捷团队成员应该怎么做? A.限制团队成员和客户之间的沟通,以防止不必要的焦虑. B.管理沟通,以重置相应团队成员和干系人的期望. C.管理几名团队成员和客户之间的沟通 ...

  8. 服务器新建分支,vscode检测不到

    执行    git remote update origin  命令,刷新远程分支

  9. django自定义管理类的save model和delete model记一次进一步了解

    业务背景: 最近在写一个个人博客网站,文章分类是一个自关联的两层分类.希望在点开分类时,显示一级分类.一级分类下的所有二级分类以及每个二级分类有多少个文章.最简单办法就是关联查询,查询出所有二级分类, ...

  10. 再见IE