Skip to content

Commit 83efc29

Browse files
authored
Create 0063-unique-paths-ii.kt
1 parent 3fdcbe2 commit 83efc29

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

Diff for: kotlin/0063-unique-paths-ii.kt

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
// If we can't do inplace, space O(N)
2+
class Solution {
3+
fun uniquePathsWithObstacles(grid: Array<IntArray>): Int {
4+
5+
val m = grid.lastIndex
6+
val n = grid[0].lastIndex
7+
8+
if (grid[m][n] == 1 || grid[0][0] == 1) return 0
9+
10+
val dp = IntArray(n+1)
11+
dp[n] = 1
12+
13+
for (i in m downTo 0) {
14+
for (j in n downTo 0) {
15+
if (grid[i][j] == 1) dp[j] = 0
16+
else if (j < n) dp[j] = dp[j] + dp[j + 1]
17+
//else dp[j] = dp[j] + 0
18+
}
19+
}
20+
21+
return dp[0]
22+
}
23+
}
24+
25+
// In place O(1)
26+
class Solution {
27+
fun uniquePathsWithObstacles(grid: Array<IntArray>): Int {
28+
29+
val m = grid.lastIndex
30+
val n = grid[0].lastIndex
31+
32+
if (grid[m][n] == 1 || grid[0][0] == 1) return 0
33+
34+
grid[m][n] = 1
35+
36+
for (i in m-1 downTo 0) {
37+
grid[i][n] = if(grid[i][n] == 0 && grid[i + 1][n] == 1) 1 else 0
38+
}
39+
40+
for (i in n-1 downTo 0) {
41+
grid[m][i] = if(grid[m][i] == 0 && grid[m][i + 1] == 1) 1 else 0
42+
}
43+
44+
for (i in m-1 downTo 0) {
45+
for (j in n-1 downTo 0) {
46+
if(grid[i][j] != 1) {
47+
grid[i][j] = grid[i + 1][j] + grid[i][j + 1]
48+
} else {
49+
grid[i][j] = 0
50+
}
51+
}
52+
}
53+
54+
return grid[0][0]
55+
}
56+
}

0 commit comments

Comments
 (0)