βMax Continuous Series of 1s
The video doesn't cover the case where first few elements are zeros. This code handles this too.
Last updated
The video doesn't cover the case where first few elements are zeros. This code handles this too.
Last updated
vector<int> getRes(int left, int right) {
vector<int> res;
for(int i = left; i <= right; i++)
res.push_back(i);
return res;
}
vector<int> Solution::maxone(vector<int> &A, int B) {
int left = -1, right = 0, zeros = (A[0] == 0);
int maxLen = 1;
int resLeft, resRight;
vector<int> res;
// find first valid index
while(zeros > B && right < A.size()) {
if(A[++right] == 0)
zeros++;
if(A[++left] == 0)
zeros--;
}
while(right + 1< A.size()) {
right++;
if(A[right] == 0)
zeros++;
if(zeros <= B){
if((right - left) > maxLen) {
maxLen = right - left;
resLeft = left + 1, resRight = right;
}
} else {
left++;
if(A[left] == 0)
zeros--;
}
}
return getRes(resLeft, resRight);
}