LC每日一题|20240513 - 994. 腐烂的橘子
在给定的
m x n网格grid中,每个单元格可以有以下三个值之一:
- 值
0代表空单元格;- 值
1代表新鲜橘子;- 值
2代表腐烂的橘子。每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。
返回 直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回
-1。
提示:
m == grid.lengthn == grid[i].length1 <= m, n <= 10grid[i][j]仅为0、1或2
题目等级:Medium
解题思路
非常简单的一道BFS问题,无需赘述~
AC代码
class Solution {
fun orangesRotting(grid: Array<IntArray>): Int {
var rest = 0
val d = arrayOf(
intArrayOf(0, 1), intArrayOf(1, 0),
intArrayOf(0, -1), intArrayOf(-1, 0)
)
val queue = ArrayDeque<IntArray>()
for (i in grid.indices) for (j in grid[0].indices) {
when (grid[i][j]) {
1 -> rest++
2 -> queue.addLast(intArrayOf(i, j))
}
}
var res = -1
while (queue.isNotEmpty()) {
repeat(queue.size) {
val cur = queue.removeFirst()
d.forEach {
val x = cur[0] + it[0]
val y = cur[1] + it[1]
if (x in grid.indices && y in grid[0].indices) {
if (grid[x][y] == 1) {
rest--
grid[x][y] = 2
queue.addLast(intArrayOf(x, y))
}
}
}
}
res++
}
return if (rest > 0) -1 else Math.max(0, res)
}
}