160. 相交链表 Golang实现
题目描述:
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。
注意这里的相交节点表示的是值和物理位置都相同的节点,不仅仅是值相同。
思路分析:
假设链表A和链表B的长度分别为lenA和lenB,这个方法的奇妙之处在于,当pA遍历到末尾时(即pA == nil),它会被重定向到headB继续遍历。类似地,当pB遍历到末尾时,它会被重定向到headA继续遍历。这样,当两个指针相遇时,它们已经同步到相同的起点,并指向第一个公共节点。
如果两个链表存在相同的节点,那么在遍历的时候应该遍历完两个链表的长度,直到两个指针相遇。
点击查看代码
func getIntersectionNode(headA, headB *ListNode) *ListNode {
if headA==nil || headB==nil{
return nil
}
pa,pb := headA,headB
for pa!=pb {
if pa!=nil{
pa = pa.Next
}else {
pa = headB
}
if pb!=nil{
pb = pb.Next
}else {
pb = headA
}
}
return pa
}
160. 相交链表 Golang实现的更多相关文章
- Java实现 LeetCode 160 相交链表
160. 相交链表 编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4, ...
- LeetCode 160——相交链表(JAVA)
编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB ...
- LeetCode 160 相交链表
题目: 编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], li ...
- Leetcode题目160.相交链表(简单)
题目描述 编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = ...
- LeetCode 160. 相交链表(Intersection of Two Linked Lists)
题目描述 编写一个程序,找到两个单链表相交的起始节点. 例如,下面的两个链表: A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3 在节点 c1 开始相交. 注意: ...
- leetcode 160相交链表
暴力解法当然可以遍历两个链表,不过time O(mn) space O(1)暂且不说, 方法一:双指针, time O(m+n),space O(1) 可以对比判断环形链表的快慢指针法. 这种方法构思 ...
- LeetCode 160. 相交链表 (找出两个链表的公共结点)
题目链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/ 编写一个程序,找到两个单链表相交的起始节点. 如下面的两 ...
- 【LeetCode】160. 相交链表
题目 输入两个链表,找出它们的第一个公共节点. 如下面的两个链表: 在节点 c1 开始相交. 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB ...
- [LeetCode题解]160. 相交链表 | 双指针 + 哈希表
方法一:双指针 解题思路 假设链表存在相交时,headA 的长度为 a + c,headB 的长度为 b + c.如果把 headA 连上 headB,headB 连上 headB 的话,当遍历这两个 ...
- Leecode 160.相交链表(Java 哈希表、双指针 两种方法)
找两个链表第一次指针相同的地方 想法:(本来是没有的,因为没读懂题目描述= =) 1.两个指针,长的先走(长减短相差的长度)这么多的步数,然后就可以开始比较指针,直到指向为空,期间如果指针相同 ...
随机推荐
- 数据结构 分块 & 莫队
分块 一种优化暴力的思想. 通常是将原数据划分成适当块(一般为 \(\sqrt{n}\)),对每块数据进行预处理,进而达到比暴力更优的时间复杂度. 划分 确定块长后,一般需要开两个数组存储每一块的右边 ...
- @RequestBody中传递json里的对象,对象包含list属性,对应body里的格式
以下就是对应格式,直接复制进接口文档相关工具即可{ "userId": "88", "openCostCenterDTO": [ { &qu ...
- CH03_运算符
CH03_运算符 算术运算符 作用:用于处理四则运算 示例: #include <iostream> using namespace std; int main() { int a = 1 ...
- Camera | 11.瑞芯微摄像头采集图像颜色偏绿解决笔记
前言 在实际调试基于瑞芯微平台的camera过程中,发现显示的图片发绿, 现在把调试步骤分享给大家: 1.修改iq文件 sdk中位置: @external/camera_engine_rkaiq/iq ...
- 5. 从0开始学ARM-MRS、MSR、寻址操作、原子操作原理
一.程序状态寄存器访问指令 ARM微处理器支持程序状态寄存器访问指令,用于在程序状态寄存器和通用寄存器之间传送数据. MRS MRS{条件} 通用寄存器,程序状态寄存器(CPSR或SPSR) MRS指 ...
- MySQL数据库基本操作以及使用
MySQL数据库 操纵数据库 查看数据库 show databases; 创建数据库 create database <database_name>; 删除数据库 drop databas ...
- 海康威视测速&闪速测速
海康威视64g 闪速128g
- SAR靶机笔记
SAR 靶机笔记 概述 SAR 是 Vulnhub 上的靶机,大家可以去 vulnhub 网站上去进行下载. 这里有链接: https://download.vulnhub.com/sar/sar.z ...
- ggml 简介
ggml 是一个用 C 和 C++ 编写.专注于 Transformer 架构模型推理的机器学习库.该项目完全开源,处于活跃的开发阶段,开发社区也在不断壮大.ggml 和 PyTorch.Tensor ...
- 2024 NepCTF
NepCTF NepMagic -- CheckIn 直接玩游戏就能出 注意有一关要把隐藏的方块全找到 NepCamera 先使用tshark读取数据 结果文件中发现大量jpeg头ffd8ffe0. ...