# 1004. Max Consecutive Ones III | LeetCode

## 1004. Max Consecutive Ones III

Given a binary array `nums` and an integer `k`, return the maximum number of consecutive `1`'s in the array if you can flip at most `k` `0`'s.

Example 1:

```Input: nums = [1,1,1,0,0,0,1,1,1,1,0], k = 2
Output: 6
Explanation: [1,1,1,0,0,1,1,1,1,1,1]
Bolded numbers were flipped from 0 to 1. The longest subarray is underlined.```

Example 2:

```Input: nums = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], k = 3
Output: 10
Explanation: [0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1]
Bolded numbers were flipped from 0 to 1. The longest subarray is underlined.
```

Constraints:

• `1 <= nums.length <= 105`
• `nums[i]` is either `0` or `1`.
• `0 <= k <= nums.length`

### Solution

class Solution {
public:
int longestOnes(vector<int>& nums, int k) {
int ans=0;
int temp=0;
int cnt=0;
int start=0,end=0;
int n=nums.size();
while(end<n){
if(nums[end]==0){
cnt++;
}
while(cnt>k){
ans=max(ans,end-start);
if(nums[start]==0){
cnt--;

}
start++;
}
ans=max(ans,end-start+1);
end++;
}
return ans;
}
};