【LeetCode笔记】160. 相交链表(Java、链表)
文章目录
- 题目描述
- 思路 & 代码
题目描述
- 感谢这道题,让我更加了解到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、链表)相关推荐
- LeetCode Algorithm 160. 相交链表
160. 相交链表 Ideas 这题之前左神算法课的时候也讲过,那是一个带环的相交链表,不过原理都是一样的. 双指针,a指针先沿着headA开始走,走到头之后开始沿着headB继续走,b指针先沿着he ...
- 【LeetCode笔记】234. 回文链表(Java、快慢指针、链表)
文章目录 题目描述 思路 & 算法 题目描述 写这道题前最好把206.翻转链表 写了 有空间复杂度的话都好说,不管是新建链表.还是用字符串equals都好做. 思路 & 算法 快慢指针 ...
- 《LeetCode力扣练习》第160题 相交链表 Java
<LeetCode力扣练习>第160题 相交链表 Java 一.资源 题目: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表不存 ...
- 【LeetCode】【HOT】160. 相交链表
[LeetCode][HOT]160. 相交链表 文章目录 [LeetCode][HOT]160. 相交链表 package hot;class ListNode{int val;ListNode n ...
- 【Leetcode】拿捏链表(四)——160. 相交链表、141. 环形链表、142. 环形链表 II
作者:一个喜欢猫咪的的程序员 专栏:<Leetcode> 喜欢的话:世间因为少年的挺身而出,而更加瑰丽. --<人民 ...
- LeetCode笔记】剑指 Offer 35. 复杂链表的复制(Java、哈希表、原地算法)
文章目录 题目描述 思路 && 代码 1. 哈希表法 2. 原地算法 二刷 题目描述 主要有两个考虑点: 不能改变原链表 新链表赋予 next.random 时,复制结点不一定存在 思 ...
- java二叉树转换为链表_leetcode刷题笔记-114. 二叉树展开为链表(java实现)
leetcode刷题笔记-114. 二叉树展开为链表(java实现) 题目描述 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 rig ...
- LeetCode实战:相交链表
背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Write a pro ...
- 《LeetCode力扣练习》剑指 Offer 25. 合并两个排序的链表 Java
<LeetCode力扣练习>剑指 Offer 25. 合并两个排序的链表 Java 一.资源 题目: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: ...
- 《LeetCode力扣练习》剑指 Offer 24. 反转链表 Java
<LeetCode力扣练习>剑指 Offer 24. 反转链表 Java 一.资源 题目: 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1-& ...
最新文章
- 用C语言解“BCD解密”问题
- tensorflow的tf.reduce_mean函数
- Yolov5 使用精灵标注助手制作数据集
- micropython随笔-hello,world
- 如何在群晖服务器上启用plex远程访问,如何在Synology NAS上更新Plex | MOS86
- nacos 配置_SpringCloud Alibaba之Nacos配置中心
- java面试题_208道Java面试题,
- Required String parameter 'images' is not present
- 计算机组成原理05章在线测试,《计算机组成原理》第05章在线测试.docx
- Unity3D教程:尽量避免使用foreach
- MYSQL中SET NAMES UTF8的作用和内涵
- [转]C++,VC++,MFC,ATL,WTL到底是什么关系么
- jquery 的一款比较好的Menu
- color ui的使用
- C++ __builtin_函数
- iOS - 一份参考简历,请注意查收!
- 编程菜鸟到大鸟--代码积累
- 厉害!23岁本科生发14篇SCI论文,并任外审专家……
- 基于校园生活一体化管理系统的可行性分析
- 432 4.3.2 STOREDRV.Deliver; recipient thread limit exceeded
热门文章
- 管理系统 c++图形界面_锁螺母ERP系统,一站式各国语言管理系统
- android设置大小能用小数,Android中关于保留小数点位数的处理
- linux语言 翻译工具,Linux文本转语音工具eSpeak介绍
- docker常用命令_docker常用命令整理
- mugen4g补丁如何使用_CAD如何去除教育版戳记?
- 开发里程碑计划_里程碑——让你轻松控制项目进度
- C++ istringstream重新绑定和处理另一个字符串
- 对象设计——责任、角色和协作思维导图笔记
- teamviewer企业版 添加计算机,teamviewer添加常用控制电脑列表的操作步骤
- 网络系统服务器子系统,网管系统中服务器及网络设备监控子系统的设计与实现...