class Solution { // review 1493 O(N) O(1)
public:
int longestSubarray(vector<int>& a) {
int l = 0, r = 0, n = (int)a.size(), k = 1, ans = 0;
for (; r < n; ++r) {
if (a[r] == 0) --k;
if (k < 0 && a[l++] == 0) ++k;
if (k >= 0 && r - l > ans) ans = r - l;
}
return ans;
}
};