无环链表相交 —— 解析

魏小言 魏小言 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

目录

题目

思路

代码

附录

无环链表相交
题目
如何判断两个无环链表是否相交,相交则返回第一个相交节点,不相交返回null。

思路
双指针,分别遍历两个链表,若有相交节点,则会在遍历第二个链表时校验出;方法返回的是相交节点。

关注我 code 杂坛,了解更多......

代码
 
package main
 
 
import "fmt"
 
 
func main () {
 
    a:=new(ListNode)
 
    a.Val = 0
 
    b:=new(ListNode)
 
    b.Val = 1
 
    c:=new(ListNode)
 
    c.Val = 2
 
 
    d:=new(ListNode)
 
    d.Val = 3
 
    e:=new(ListNode)
 
    e.Val = 4
 
 
    a.Next= b
 
    b.Next = c
 
    c.Next = e
 
 
    d.Next = e
 
    fmt.Println("hello https://tool.lu/",IsSame(a,d))
 
}
 
type ListNode struct{
 
    Val int
 
    Next *ListNode
 
}
 
func IsSame(a,b *ListNode) *ListNode{
 
    if a == nil || b == nil{
 
        return nil
 
    }
 
    s,f:=a,b
 
    for s != f{
 
        if s == nil{
 
            s = b
 
        }else{
 
            s = s.Next
 
        }
 
        if f == nil{
 
            f = a
 
        }else{
 
            f = f.Next
 
        }
 
    }
 
    return s
 
}
附录
————————————————
版权声明:本文为CSDN博主「魏小言」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34417408/article/details/124467231

...全文
评论 1
收藏 已收藏
分享
返回顶部
魏小言
魏小言 优质创作者: 云计算技术领域 优质创作者: 云计算技术领域领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
code杂坛 16 成员 76 内容