Flip
vector<int> Solution::flip(string A) {
int n = A.size();
vector<int> res;
vector<int> kaden;
int hasZero = false;
for(int x: A)
if(x == '0') {
hasZero = true;
kaden.push_back(1);
} else
kaden.push_back(-1);
if(!hasZero)
return res;
res.push_back(0);
res.push_back(0);
int sum = -1, maxSum = -1;
int left = 0;
for(int i = 0; i < n; i++) {
if(sum < 0) {
left = i + 1;
sum = kaden[i];
} else
sum += kaden[i];
if(sum > maxSum) {
maxSum = sum;
res[0] = left;
res[1] = i + 1;
}
}
return res;
}
Last updated