765. Couples Holding Hands
Input: row = [0, 2, 1, 3]
Output: 1
Explanation: We only need to swap the second (row[1]) and third (row[2]) person.Input: row = [3, 2, 0, 1]
Output: 0
Explanation: All couples are already seated side by side.// Greedy
int minSwapsCouples(vector<int>& row) { // time: O(n^2); space: O(1)
int res = 0, n = row.size();
for (int i = 0; i < n - 1; i += 2) {
if (row[i + 1] == (row[i] ^ 1)) continue;
++res;
for (int j = i + 1; j < n; ++j) {
if (row[j] == (row[i] ^ 1)) {
swap(row[i + 1], row[j]);
break;
}
}
}
return res;
}Last updated