Skip to content

Commit de1dd97

Browse files
authored
Create minimum-sideway-jumps.cpp
1 parent e453966 commit de1dd97

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

C++/minimum-sideway-jumps.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// Time: O(n)
2+
// Space: O(1)
3+
4+
class Solution {
5+
public:
6+
int minSideJumps(vector<int>& obstacles) {
7+
static const int MAX_N = 5 * 1e5;
8+
static const int INF = (MAX_N - 1) + 1;
9+
10+
array<int, 3> dp{1, 0, 1};
11+
for (const auto& i : obstacles) {
12+
if (i) {
13+
dp[i - 1] = INF;
14+
}
15+
for (int j = 0; j < 3; ++j) {
16+
if (j + 1 != i) {
17+
dp[j] = min({dp[0] + (j != 0), dp[1] + (j != 1), dp[2] + (j != 2)});
18+
}
19+
}
20+
}
21+
return *min_element(cbegin(dp), cend(dp));
22+
}
23+
};

0 commit comments

Comments
 (0)