011 滑动窗口——最大连续1的个数III
·
一、题目描述

二、算法原理
转化:找出最长的子数组,0的个数不超过k个
- 解法一:暴力枚举 + zero计数器
- 解法二:利用“滑动窗口”解决
- 1. left = 0 , right = 0
- 2. 进窗口(如果是1,无视;如果是0,计数器+1)
- 3. 判断(zero > k )
- 出窗口
- 4. 更新结果
三、代码实现
class Solution
{
public:
int longestOnes(vector<int>& nums, int k)
{
int ret = 0;
for(int left = 0,right = 0, zero = 0;right < nums.size() ;right++)
{
if(nums[right] == 0) zero++; //进窗口
while(zero > k) //判断
{
if(nums[left++] == 0) zero--; //出窗口
}
ret= max(ret,right-left+1);
}
return ret;
}
};更多推荐


所有评论(0)