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]) {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]);12
dp[0] = Integer.MAX_VALUE;13
dp[1] = min(dp[1], dp[2] + 1);14
dp[2] = min(dp[1] + 1, dp[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]);22
dp[0] = min(dp[0], dp[1] + 1);23
dp[1] = min(dp[0] + 1, dp[1]);24
dp[2] = Integer.MAX_VALUE;28
return min(dp[0], dp[1], dp[2]);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);