class Solution {//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;//用掉一格可刪0配額
if (k < 0 && a[l++] == 0) ++k;丟到0才補回配額
if (k >= 0 && r - l > ans) ans = r - l;//合法更新
}
return ans;
}
};
1004和1493就多一個減 1
while可以一次消除多個0,但評估覺得沒有太大的必要性
zero不使用,因為沒有每步更新的需求