Leet Code Daily 2024-06-24 - Minimum Number of K Consecutive Bit Flips
Solution
Greedy, always flip from the first 0 bit.
Code
class Solution {
public:
int minKBitFlips(vector<int>& nums, int k) {
int n = nums.size(), ans = 0;
queue<int> flip_upper_bounds;
for (int i = 0; i < n; i++) {
while (!flip_upper_bounds.empty() &&
flip_upper_bounds.front() < i) {
flip_upper_bounds.pop();
}
if ((nums[i] + flip_upper_bounds.size()) % 2 == 0) {
if (i + k - 1 < n) {
flip_upper_bounds.push(i + k - 1), ans++;
} else {
return -1;
}
}
}
return ans;
}
};