golang刷leetcode技巧之如何解决节点间通路问题
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,这篇文章将为大家详细讲解有关golang刷leetcode技巧之如何解决节点间通路问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。节点间通路。给定有向图,设计一个
千家信息网最后更新 2025年02月03日golang刷leetcode技巧之如何解决节点间通路问题
这篇文章将为大家详细讲解有关golang刷leetcode技巧之如何解决节点间通路问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
节点间通路。给定有向图,设计一个算法,找出两个节点之间是否存在一条路径。
示例1:
输入:n = 3, graph = [[0, 1], [0, 2], [1, 2], [1, 2]], start = 0, target = 2
输出:true
示例2:
输入:n = 5, graph = [[0, 1], [0, 2], [0, 4], [0, 4], [0, 1], [1, 3], [1, 4], [1, 3], [2, 3], [3, 4]], start = 0, target = 4
输出 true
提示:
节点数量n在[0, 1e5]范围内。
节点编号大于等于 0 小于 n。
图中可能存在自环和平行边。
解题思路
1,图相关的问题,一般广度优先遍历或者深度优先遍历即可解决
2,广度优先遍历借助对接,深度优先遍历借助栈,或者递归
3,针对寻找联通路径,广度优先遍历比较简单
4,为了表示方便,可以先把图转成邻接矩阵
代码实现
func findWhetherExistsPath(n int, graph [][]int, start int, target int) bool {
adj:=make([][]int,n)
for i:=0;i
adj[graph[i][0]]=append(adj[graph[i][0]],graph[i][1])
}
var q queue
q.push(start)
// fmt.Println(adj,q.isEmpty())
for !q.isEmpty(){
y:=q.pop()
for _,x:=range adj[y]{
//fmt.Println(q,x,y)
if x==target{
return true
}
q.push(x)
}
}
return false
}
type queue struct{
data []int
}
func (q *queue)push(x int){
q.data=append(q.data,x)
}
func(q* queue)pop()int{
x:=q.data[0]
q.data=q.data[1:]
return x
}
func(q *queue)isEmpty()bool{
return len(q.data)==0
}
关于"golang刷leetcode技巧之如何解决节点间通路问题"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
节点
问题
广度
篇文章
技巧
更多
深度
示例
路径
输入
输出
不错
实用
两个
之间
代码
内容
思路
数量
文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
提高网络技术的措施
2021西安网络安全大会主题
关于沈阳软件开发产业
服务器上怎么用小皮面板
中国工商银行西安软件开发
网络安全的4个坚持
数据库db实例
中国移动网络技术的发展史
闵行区软件开发使用方法
山东pdu服务器电源可以定制吗
学校风险数据库wore
软件开发工作分解
浅谈计算机网络技术总结
上海要邀网络技术有限公司
巅峰坦克如何切换服务器
软件开发过程描述
一般网络安全责任保险多少钱
福州笨马网络技术有限公司
服务器映射到外网安全方法
买台服务器
乐山软件开发软件
江苏营销软件开发厂家
增加数据库表字段
网络安全工作第一责任人是
华为服务器管理口安装系统
喜雅拉广播提示服务器繁忙
从大学生视角谈网络安全
浮游植物监测数据库
永安专业软件开发需要多少钱
电子商务与网络安全论文