-
Notifications
You must be signed in to change notification settings - Fork 0
/
1765.map-of-highest-peak.kt
36 lines (36 loc) · 1.02 KB
/
1765.map-of-highest-peak.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class Solution
val dirs = listOf(-1 to 0,1 to 0,0 to 1, 0 to -1)
fun Solution.highestPeak(isWater: Array<IntArray>): Array<IntArray> {
val m = isWater.size
val n = isWater[0].size
var current = mutableListOf<Pair<Int,Int>>()
val visited = Array(m) {Array(n) {false}}
val ret = Array(m) {IntArray(n)}
for(i in 0 until m){
for(j in 0 until n){
if(isWater[i][j]==1){
current.add(i to j)
visited[i][j] = true
}
}
}
var d = 0
while(current.size>0){
val lst = mutableListOf<Pair<Int,Int>>()
for((i,j) in current){
for((di,dj) in dirs){
val ni = i+di
val nj = j+dj
if(ni<0||nj<0) continue
if(ni>=m || nj>=n) continue
if(visited[ni][nj]) continue
visited[ni][nj] = true
lst.add(ni to nj)
ret[ni][nj] = d+1
}
}
current = lst
d++
}
return ret
}