這道題是leetcode中的542題-01矩陣,
題目大意是給定乙個由 0 和 1 組成的矩陣,找出每個元素到最近的 0 的距離。兩個相鄰元素間的距離為 1
輸入 [0 0 0]
[0 1 0]
[0 0 0]
輸出 [0 0 0]
[0 1 0]
[0 0 0]
輸入 [0 0 0]
[0 1 0]
[1 1 1]
輸出 [0 0 0]
[0 1 0]
[1 2 1]
注意: 給定矩陣的元素個數不超過 10000。
給定矩陣中至少有乙個元素是 0。
矩陣中的元素只在四個方向上相鄰: 上、下、左、右
這道題是典型的可以使用bfs去解決的,首頁遍歷陣列將所有非0的賦值為-1,遍歷的同時將為0的座標儲存到陣列中。遍歷之前儲存0的陣列的上下左右,在當前為0座標的資料上加1,並且儲存到陣列中
classmatrixsolution
else}}
//這兩個陣列用於取值上下左右遍歷
let bx = [-1, 1, 0, 0
]; let by = [0, 0, -1, 1
];
//遍歷stack佇列 知道為空時為止
while !stack.isempty }}
return
tempmatrix;
}}
優先關係矩陣 演算法 廣度優先搜尋
概念 廣度優先搜尋 是一種通過逐層遍歷所有訪問物件,從而找到通過最短節點數到達目標的演算法。學習準備 學習前,需要先掌握圖 graph 佇列 queue 棧 stack 的概念。還得了解 鄰接矩陣 的用法。示例 在下圖 graph 中,找到從a點到h點的最短距離。廣度優先演算法的搜尋方式 通過逐層遍...
廣度優先搜尋 鄰接矩陣
需要了解的是,圖的廣度搜尋遍歷類似於二叉樹的層次遍歷,用到了隊的操作 如下 include include define ok 1 define error 0 define true 1 define false 0 define maxvex 100typedef int datatype 設定...
搜尋 廣度優先搜尋
廣度優先搜尋一層一層地進行遍歷,每層遍歷都是以上一層遍歷的結果作為起點,遍歷乙個距離能訪問到的所有節點。需要注意的是,遍歷過的節點不能再次被遍歷。class solution,int shortestpathbinarymatrix vectorint grid length return 1 cl...