【优选算法】11----最大连续1的个数|||
---------------------------------------begin---------------------------------------
题目解析:
讲解算法原理:
这道题目可以使用滑动窗口算法来解决。滑动窗口的核心思想是通过维护一个窗口,使得窗口内的
0的个数不超过k
,然后不断移动窗口的左右边界来找到最长的连续1子数组。
通过滑动窗口算法,我们可以高效地解决这个问题。滑动窗口算法的关键在于维护一个满足条件的
窗口,并通过移动窗口的边界来找到最优解。在这道题目中,我们通过维护一个窗口使得窗口内的
0的个数不超过k
,从而找到了最长的连续1子数组。
编写代码:
class Solution {
public:
int longestOnes(vector<int>& nums, int k) {
int ret=0;
int n=nums.size();
for(int right=0,left=0,zero=0;right<n;right++)
{
if(nums[right]==0)
{
zero++;
}
while(zero>k)
{
if(nums[left++]==0)
{
zero--;
}
}
ret=max(ret,right-left+1);
}
return ret;
}
};
有兴趣的铁子可以参照我的思路来做一遍哦~
题目直达--->
1004. 最大连续1的个数 III - 力扣(LeetCode)