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 either0
or1
.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;
}
};
0 Comments
If you have any doubts/suggestion/any query or want to improve this article, you can comment down below and let me know. Will reply to you soon.