91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang刷leetcode技巧之如何解決節點間通路問題

發布時間:2021-12-16 09:16:30 來源:億速云 閱讀:124 作者:小新 欄目:大數據

這篇文章將為大家詳細講解有關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<len(graph);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技巧之如何解決節點間通路問題”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

广饶县| 汾西县| 新绛县| 勐海县| 高雄市| 丰原市| 奉节县| 东平县| 饶阳县| 新津县| 乐亭县| 三门峡市| 漳平市| 清水县| 建湖县| 兴仁县| 友谊县| 宣城市| 长汀县| 澄迈县| 东丽区| 资讯| 安新县| 三江| 兴海县| 子长县| 亚东县| 武隆县| 常熟市| 于田县| 郴州市| 永定县| 卓尼县| 滕州市| 台东市| 宁陵县| 同心县| 瑞昌市| 手游| 海安县| 古蔺县|