算法学习11——滑动窗口——最大连续1的个数

1.题目

给定一个二进制数组 nums 和一个整数 k,假设最多可以翻转 k0 ,则返回执行操作后 数组中连续 1 的最大个数

示例 1:

复制代码
输入:nums = [1,1,1,0,0,0,1,1,1,1,0], K = 2
输出:6
解释:[1,1,1,0,0,1,1,1,1,1,1]
粗体数字从 0 翻转到 1,最长的子数组长度为 6。

示例 2:

复制代码
输入:nums = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], K = 3
输出:10
解释:[0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1]
粗体数字从 0 翻转到 1,最长的子数组长度为 10。

提示:

  • 1 <= nums.length <= 105
  • nums[i] 不是 0 就是 1
  • 0 <= k <= nums.length

2.算法原理

cpp 复制代码
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;
    }
};
相关推荐
JANYI20184 小时前
C文件在C++平台编译时的注意事项
java·c语言·c++
王禄DUT5 小时前
高维亚空间超频物质变压缩技术 第27次CCF-CSP计算机软件能力认证
数据结构·算法
蓝莓味柯基5 小时前
Python 学习路线与笔记跳转(持续更新笔记链接)
笔记·python·学习
freyazzr6 小时前
Leetcode刷题 | Day51_图论03_岛屿问题02
数据结构·c++·算法·leetcode·深度优先·图论
passionSnail6 小时前
《MATLAB实战训练营:从入门到工业级应用》工程实用篇-自动驾驶初体验:车道线检测算法实战(MATLAB2016b版)
算法·matlab·自动驾驶
2301_807611496 小时前
126. 单词接龙 II
c++·算法·leetcode·深度优先·广度优先·回溯
Rytter6 小时前
Android逆向学习(八)Xposed快速上手(上)
android·学习
Kx…………6 小时前
Day3:设置页面全局渐变线性渐变背景色uniapp壁纸实战
前端·学习·uni-app·实战·项目
等什么君!6 小时前
学习spring boot-拦截器Interceptor,过滤器Filter
java·spring boot·学习
Phoebe鑫7 小时前
数据结构每日一题day15(链表)★★★★★
算法