Skip to content

Commit

Permalink
Kotlin: 994. Rotting Oranges
Browse files Browse the repository at this point in the history
  • Loading branch information
MaratKhakim committed Sep 12, 2022
1 parent fd08e46 commit b249ba3
Showing 1 changed file with 52 additions and 0 deletions.
52 changes: 52 additions & 0 deletions kotlin/994-Rotting-Oranges.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
class Solution {
fun orangesRotting(grid: Array<IntArray>): Int {
val m = grid.size
val n = grid[0].size
var fresh = 0
var minute = -1
var queue = LinkedList<IntArray>()
val dirs = arrayOf(intArrayOf(-1,0),intArrayOf(1,0),intArrayOf(0,1),intArrayOf(0,-1))

for (i in 0..m-1) {
for (j in 0..n-1) {
val curr = grid[i][j]

if (curr == 2)
queue.add(intArrayOf(i, j))
else if (curr == 1)
fresh++
}
}

var temp = LinkedList<IntArray>()

while (queue.size != 0) {
val curr = queue.poll()

for (dir in dirs) {
val x = curr[0] + dir[0]
val y = curr[1] + dir[1]

if (x < 0 || x >= m || y < 0 || y >= n)
continue

if (grid[x][y] == 1) {
temp.add(intArrayOf(x, y))
fresh--
grid[x][y] = 2
}
}

if (queue.size == 0) {
minute++
queue = temp
temp = LinkedList<IntArray>()
}
}

if (fresh != 0)
return -1

return if (minute == -1) 0 else minute
}
}

0 comments on commit b249ba3

Please sign in to comment.