首页 > 其他分享 >160. 相交链表 Golang实现

160. 相交链表 Golang实现

时间:2024-10-22 11:48:05浏览次数:8  
标签:Golang nil pb 链表 pa headB headA 160

题目描述:

给你两个单链表的头节点 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
}

标签:Golang,nil,pb,链表,pa,headB,headA,160
From: https://www.cnblogs.com/CharlseGo/p/18492278

相关文章

  • C语言中如何实现链表
    文章开头:在C语言中,实现链表主要涉及以下几个步骤:定义链表的结点、创建链表、添加链表结点、删除链表结点、查找链表结点、打印链表和释放整个链表。我们以一个单链表为例,每一个结点包括两部分:一部分是数据域,存放元素的值;另一部分是指针域,存放下一个结点的地址。创建链表首先需要......
  • LeetCode题练习与总结:奇偶链表--328
    一、题目描述给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。你必须在 ......
  • 数据结构-双向链表
    一概念与结构带头双向循环链表注意:这⾥的“带头”跟前⾯我们说的“头结点”是两个概念,带头链表⾥的头结点,实际为“哨兵位”,哨兵位结点不存储任何有效元素,只是站在这⾥“放哨的。如果,带头的链表中,只有头节点,我们就称该链表为空链表。二双向链表的实现创建一个新项目,并创......
  • Leetcode 160. Intersection of Two Linked Lists
    Leetcode160.IntersectionofTwoLinkedLists错解一开始没看清题目的要求中,提到最后表结构不能变,想到的做法是:先遍历A,把A翻转,然后B就可以走到headA判断出它们是否相交,但是即便如此,也不能判断出相交点在哪里,而且还会破坏链表的结构,所以这种写法不行。正解classSolution{......
  • K个节点翻转链表
    概述起因:leetcode题目25.K个一组翻转链表问题描述给你链表的头节点head,每k个节点一组进行翻转,请你返回修改后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值......
  • 搭建Golang gRPC环境:protoc、protoc-gen-go 和 protoc-gen-go-grpc 工具安装教程
    参考文章:安装protoc、protoc-gen-go、protoc-gen-go-grpc-CSDN博客一、简单介绍本文开发环境,均为windows环境,mac环境其实也类似~①编译proto文件,相关插件简单介绍:protoc是编译器,用于将.proto文件编译成代码;protoc-gen-go是一个插件,用于生成Go语言的数据结构代......
  • 代码随想录算法训练营第五天| 面试题02.07.链表相交、leetcode142 环形链表II
    1.leetcode面试题02.07.链表相交题目链接:面试题02.07.链表相交-力扣(LeetCode)文章链接:代码随想录1.1代码跟着老师写的一个版本,自己能理解思路了,但是写的话可能还是有一些难#Definitionforsingly-linkedlist.#classListNode:#def__init__(self,x):#......
  • LeetCode第160:相交链表
    文章目录......
  • 【算法】将单向链表按某值分成左边小、中间相等、右边大的形式
    前置知识数据结构:链表测试链接:链表划分本题考察对链表coding速度的熟练度。也考察读者对链表分块的处理,另外,透过此题可以窥探链表快速排序的实现。题目给定一个单向链表的头节点head,节点的值是int类型。给定任意整数pivot。实现这样一个函数。将原链表调整为......
  • golang项目引用GitHub私有仓库module
    1.创建gomodule项目module的名字假设为go-testmodule项目创建成功后,将go.mod文件中的module"go-test"修改成module"github.com/tonglin0325/go-test"避免引用的时候goget的时候报错,如下gogetgithub.com/tonglin0325/go-test@latestgo:github.com/tonglin0325......