Skip to content

Commit 302df53

Browse files
authored
Create minimum-swaps-to-make-sequences-increasing.cpp
1 parent 6e39875 commit 302df53

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// Time: O(n)
2+
// Space: O(1)
3+
4+
class Solution {
5+
public:
6+
int minSwap(vector<int>& A, vector<int>& B) {
7+
vector<int> dp_no_swap(2), dp_swap(2, 1);
8+
for (int i = 1; i < A.size(); ++i) {
9+
dp_no_swap[i % 2] = dp_swap[i % 2] = numeric_limits<int>::max();
10+
if (A[i - 1] < A[i] && B[i -1] < B[i]) {
11+
dp_no_swap[i % 2] = min(dp_no_swap[i % 2], dp_no_swap[(i - 1) % 2]);
12+
dp_swap[i % 2] = min(dp_swap[i % 2], dp_swap[(i - 1) % 2] + 1);
13+
}
14+
if (A[i - 1] < B[i] && B[i - 1] < A[i]) {
15+
dp_no_swap[i % 2] = min(dp_no_swap[i % 2], dp_swap[(i - 1) % 2]);
16+
dp_swap[i % 2] = min(dp_swap[i % 2], dp_no_swap[(i - 1) % 2] + 1);
17+
}
18+
}
19+
return min(dp_no_swap[(A.size() - 1) % 2], dp_swap[(A.size() - 1) % 2]);
20+
}
21+
};

0 commit comments

Comments
 (0)