Skip to content

Commit 579edec

Browse files
committed
Update Solution.kt
1 parent 77f0321 commit 579edec

File tree

1 file changed

+21
-18
lines changed
  • src/main/kotlin/g1001_1100/s1036_escape_a_large_maze

1 file changed

+21
-18
lines changed

src/main/kotlin/g1001_1100/s1036_escape_a_large_maze/Solution.kt

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@ class Solution {
88
if (blocked.isEmpty()) {
99
return true
1010
}
11-
val blocks: MutableSet<Int> = HashSet()
11+
12+
val blocks = mutableSetOf<Int>()
1213
for (b in blocked) {
13-
if (target[0] * 1000000 + target[1] != b[0] * 1000000 + b[1]) {
14-
blocks.add(b[0] * 1000000 + b[1])
14+
if (target[0] * 1_000_000 + target[1] != b[0] * 1_000_000 + b[1]) {
15+
blocks.add(b[0] * 1_000_000 + b[1])
1516
}
1617
}
17-
return (
18-
dfs(blocks, source, source[0], source[1], HashSet(), target) &&
19-
dfs(blocks, target, target[0], target[1], HashSet(), source)
20-
)
18+
19+
return dfs(blocks, source, source[0], source[1], mutableSetOf(), target) &&
20+
dfs(blocks, target, target[0], target[1], mutableSetOf(), source)
2121
}
2222

2323
private fun dfs(
@@ -28,22 +28,25 @@ class Solution {
2828
visited: MutableSet<Int>,
2929
target: IntArray,
3030
): Boolean {
31-
if (i < 0 || j < 0 || i > 999999 || j > 999999 || blocks.contains(i * 1000000 + j) ||
32-
visited.contains(i * 1000000 + j)
33-
) {
31+
if (i < 0 || j < 0 || i > 999_999 || j > 999_999) {
32+
return false
33+
}
34+
val pos = i * 1_000_000 + j
35+
if (blocks.contains(pos) || visited.contains(pos)) {
3436
return false
3537
}
3638
if (i == target[0] && j == target[1]) {
3739
return true
3840
}
39-
visited.add(i * 1000000 + j)
40-
return if (visited.size > blocks.size * (blocks.size + 1)) {
41-
true
42-
} else {
43-
dfs(blocks, start, i + 1, j, visited, target) ||
44-
dfs(blocks, start, i - 1, j, visited, target) ||
45-
dfs(blocks, start, i, j + 1, visited, target) ||
46-
dfs(blocks, start, i, j - 1, visited, target)
41+
42+
visited.add(pos)
43+
if (visited.size > blocks.size * (blocks.size + 1)) {
44+
return true
4745
}
46+
47+
return dfs(blocks, start, i + 1, j, visited, target) ||
48+
dfs(blocks, start, i - 1, j, visited, target) ||
49+
dfs(blocks, start, i, j + 1, visited, target) ||
50+
dfs(blocks, start, i, j - 1, visited, target)
4851
}
4952
}

0 commit comments

Comments
 (0)