文章目录

  • 题目描述
  • 思路 & 代码

题目描述

  • 感谢这道题,让我更加了解到Dalao们思路的nb
  • 主要是满足空间复杂度O(1)。否则用哈希表不难实现。

思路 & 代码

  • 有相交结点的情况下,可以找到这么一个等式:
    // 假设链表长度为m,n,起始结点分别对应x,y
    // 那么有 m + y = n + x,就是走完一轮后交换着链表走,双指针能同时达到第一个起点
  • 由此,我们可以开始写代码了。
  • 每个指针,要么走m + n的路程(不相交),要么走 m + y 的路程(相交)
/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {ListNode forA = headA, forB = headB;boolean flag = false;// 假设链表长度为m,n,起始结点分别对应x,y// 那么有 m + y = n + x,就是走完一轮后交换着链表走,双指针能同时达到第一个起点while(true){// 走完 m + n的路程,还是没找到的情况if(forA == null && forB == null && flag){return null;}// 两种交换if(forA == null){forA = headB;flag = true;}if(forB == null){forB = headA;}if(forA == forB){return forA;}forA = forA.next;forB = forB.next;}}
}

【LeetCode笔记】160. 相交链表(Java、链表)相关推荐

  1. LeetCode Algorithm 160. 相交链表

    160. 相交链表 Ideas 这题之前左神算法课的时候也讲过,那是一个带环的相交链表,不过原理都是一样的. 双指针,a指针先沿着headA开始走,走到头之后开始沿着headB继续走,b指针先沿着he ...

  2. 【LeetCode笔记】234. 回文链表(Java、快慢指针、链表)

    文章目录 题目描述 思路 & 算法 题目描述 写这道题前最好把206.翻转链表 写了 有空间复杂度的话都好说,不管是新建链表.还是用字符串equals都好做. 思路 & 算法 快慢指针 ...

  3. 《LeetCode力扣练习》第160题 相交链表 Java

    <LeetCode力扣练习>第160题 相交链表 Java 一.资源 题目: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表不存 ...

  4. 【LeetCode】【HOT】160. 相交链表

    [LeetCode][HOT]160. 相交链表 文章目录 [LeetCode][HOT]160. 相交链表 package hot;class ListNode{int val;ListNode n ...

  5. 【Leetcode】拿捏链表(四)——160. 相交链表、141. 环形链表、142. 环形链表 II

    作者:一个喜欢猫咪的的程序员 专栏:<Leetcode> 喜欢的话:世间因为少年的挺身而出,而更加瑰丽.                                  --<人民 ...

  6. LeetCode笔记】剑指 Offer 35. 复杂链表的复制(Java、哈希表、原地算法)

    文章目录 题目描述 思路 && 代码 1. 哈希表法 2. 原地算法 二刷 题目描述 主要有两个考虑点: 不能改变原链表 新链表赋予 next.random 时,复制结点不一定存在 思 ...

  7. java二叉树转换为链表_leetcode刷题笔记-114. 二叉树展开为链表(java实现)

    leetcode刷题笔记-114. 二叉树展开为链表(java实现) 题目描述 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 rig ...

  8. LeetCode实战:相交链表

    背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Write a pro ...

  9. 《LeetCode力扣练习》剑指 Offer 25. 合并两个排序的链表 Java

    <LeetCode力扣练习>剑指 Offer 25. 合并两个排序的链表 Java 一.资源 题目: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: ...

  10. 《LeetCode力扣练习》剑指 Offer 24. 反转链表 Java

    <LeetCode力扣练习>剑指 Offer 24. 反转链表 Java 一.资源 题目: 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1-& ...

最新文章

  1. 用C语言解“BCD解密”问题
  2. tensorflow的tf.reduce_mean函数
  3. Yolov5 使用精灵标注助手制作数据集
  4. micropython随笔-hello,world
  5. 如何在群晖服务器上启用plex远程访问,如何在Synology NAS上更新Plex | MOS86
  6. nacos 配置_SpringCloud Alibaba之Nacos配置中心
  7. java面试题_208道Java面试题,
  8. Required String parameter 'images' is not present
  9. 计算机组成原理05章在线测试,《计算机组成原理》第05章在线测试.docx
  10. Unity3D教程:尽量避免使用foreach
  11. MYSQL中SET NAMES UTF8的作用和内涵
  12. [转]C++,VC++,MFC,ATL,WTL到底是什么关系么
  13. jquery 的一款比较好的Menu
  14. color ui的使用
  15. C++ __builtin_函数
  16. iOS - 一份参考简历,请注意查收!
  17. 编程菜鸟到大鸟--代码积累
  18. 厉害!23岁本科生发14篇SCI论文,并任外审专家……
  19. 基于校园生活一体化管理系统的可行性分析
  20. 432 4.3.2 STOREDRV.Deliver; recipient thread limit exceeded

热门文章

  1. 管理系统 c++图形界面_锁螺母ERP系统,一站式各国语言管理系统
  2. android设置大小能用小数,Android中关于保留小数点位数的处理
  3. linux语言 翻译工具,Linux文本转语音工具eSpeak介绍
  4. docker常用命令_docker常用命令整理
  5. mugen4g补丁如何使用_CAD如何去除教育版戳记?
  6. 开发里程碑计划_里程碑——让你轻松控制项目进度
  7. C++ istringstream重新绑定和处理另一个字符串
  8. 对象设计——责任、角色和协作思维导图笔记
  9. teamviewer企业版 添加计算机,teamviewer添加常用控制电脑列表的操作步骤
  10. 网络系统服务器子系统,网管系统中服务器及网络设备监控子系统的设计与实现...