Minimum Sideway Jumps LeetCode solution in Java

1
class Solution {
2
public int minSideJumps(int[] obstacles) {
3
int[] dp = new int[] {1, 0, 1};
4
for (int i = 1; i < obstacles.length; i++) {
5
switch (obstacles[i]) {
6
case 0:
7
dp[0] = min(dp[0], dp[1] + 1, dp[2] + 1);
8
dp[1] = min(dp[0] + 1, dp[1], dp[2] + 1);
9
dp[2] = min(dp[0] + 1, dp[1] + 1, dp[2]);
10
break;
11
case 1:
12
dp[0] = Integer.MAX_VALUE;
13
dp[1] = min(dp[1], dp[2] + 1);
14
dp[2] = min(dp[1] + 1, dp[2]);
15
break;
16
case 2:
17
dp[0] = min(dp[0], dp[2] + 1);
18
dp[1] = Integer.MAX_VALUE;
19
dp[2] = min(dp[0] + 1, dp[2]);
20
break;
21
case 3:
22
dp[0] = min(dp[0], dp[1] + 1);
23
dp[1] = min(dp[0] + 1, dp[1]);
24
dp[2] = Integer.MAX_VALUE;
25
break;
26
}
27
}
28
return min(dp[0], dp[1], dp[2]);
29
}
30

31
int min(int... vals) {
32
int min = Integer.MAX_VALUE;
33
for (int val : vals) {
34
if (val >= 0) min = Math.min(min, val);
35
}
36
return min;
37
}
38
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0