算法学习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;
    }
};
相关推荐
老歌老听老掉牙5 分钟前
使用 OpenCASCADE 提取布尔运算后平面图形的外轮廓
c++·平面·opencascade
●VON16 分钟前
重生之我在大学自学鸿蒙开发第七天-《AI语音朗读》
学习·华为·云原生·架构·harmonyos
微笑尅乐17 分钟前
三种思路彻底掌握 BST 判断(递归与迭代全解析)——力扣98.验证二叉搜索树
算法·leetcode·职场和发展
闻缺陷则喜何志丹22 分钟前
【动态规划】数位DP的原理、模板(封装类)
c++·算法·动态规划·原理·模板·数位dp
豆沙沙包?39 分钟前
2025年--Lc194-516. 最长回文子序列(动态规划在字符串的应用,需要二刷)--Java版
java·算法·动态规划
胖咕噜的稞达鸭40 分钟前
二叉树搜索树插入,查找,删除,Key/Value二叉搜索树场景应用+源码实现
c语言·数据结构·c++·算法·gitee
showmethetime41 分钟前
基于相空间重构的混沌时间序列预测MATLAB实现
算法
进击的大海贼1 小时前
QT-C++ 自定义加工统计通用模块
开发语言·c++·qt
地平线开发者1 小时前
大模型 | VLM 初识及在自动驾驶场景中的应用
算法·自动驾驶
lingran__1 小时前
算法沉淀第四天(Winner)
c++·算法