@@ -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