[Leedcode][JAVA][第542题][01矩阵][BFS]
生活随笔
收集整理的這篇文章主要介紹了
[Leedcode][JAVA][第542题][01矩阵][BFS]
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
【問(wèn)題描述】542. 01 矩陣
給定一個(gè)由 0 和 1 組成的矩陣,找出每個(gè)元素到最近的 0 的距離。 兩個(gè)相鄰元素間的距離為 1 。 示例 : 輸入: 0 0 0 0 1 0 1 1 1 輸出: 0 0 0 0 1 0 1 2 1 注意: 給定矩陣的元素個(gè)數(shù)不超過(guò) 10000。 給定矩陣中至少有一個(gè)元素是 0。 矩陣中的元素只在四個(gè)方向上相鄰: 上、下、左、右。【解答思路】
1. BFS
- 隊(duì)列 先進(jìn)先出 多個(gè)或一個(gè)“元素”入隊(duì)列
- 依次彈出元素 判斷邊界 距離加+1
時(shí)間復(fù)雜度:O(N^2) 空間復(fù)雜度:O(N^2)
【總結(jié)】
1. BFS 隊(duì)列 先進(jìn)先出
2. BFS 圖形題目
int[][] directions = new int[][]{{0,-1},{0,1},{1,0},{-1,0}};// 標(biāo)記當(dāng)前位置是否都看過(guò)boolean[][] visited = new boolean[n][m];// BFS 隊(duì)列 Queue<int []> queue = new LinkedList<>();3.隊(duì)列基本操作
Queue是在兩端出入的List,所以也可以用數(shù)組或鏈表來(lái)實(shí)現(xiàn)。
- add 增加一個(gè)元索 如果隊(duì)列已滿,則拋出一個(gè)IIIegaISlabEepeplian異常
- remove 移除并返回隊(duì)列頭部的元素 如果隊(duì)列為空,則拋出一個(gè)NoSuchElementException異常
- element 返回隊(duì)列頭部的元素 如果隊(duì)列為空,則拋出一個(gè)NoSuchElementException異常
- offer 添加一個(gè)元素并返回true 如果隊(duì)列已滿,則返回false
- poll 移除并返問(wèn)隊(duì)列頭部的元素 如果隊(duì)列為空,則返回null
- peek 返回隊(duì)列頭部的元素 如果隊(duì)列為空,則返回null
- put 添加一個(gè)元素 如果隊(duì)列滿,則阻塞
- take 移除并返回隊(duì)列頭部的元素 如果隊(duì)列為空,則阻塞
注意
-
remove、element、offer 、poll、peek 其實(shí)是屬于Queue接口。
-
add remove element操作在隊(duì)滿或者隊(duì)空的時(shí)候會(huì)報(bào)異常。
-
offer poll peek 在隊(duì)滿或者隊(duì)空的時(shí)候不會(huì)報(bào)異常。
-
put take操作屬于阻塞操作。隊(duì)滿隊(duì)空均會(huì)阻塞。
總結(jié)
以上是生活随笔為你收集整理的[Leedcode][JAVA][第542题][01矩阵][BFS]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java计算机毕业设计中国民航酒店分销系
- 下一篇: setSignVisible的修改