当前位置: 首页 > news >正文

【C++算法】11.滑动窗口_最大连续1的个数lll

文章目录

    • 题目链接:
    • 题目描述:
    • 解法
    • C++ 算法代码:
    • 图解


题目链接:

1004. 最大连续 1 的个数 III


题目描述:

08a35811110d05c1c2ac5700baaaefd4


解法

解法一:暴力枚举+zero计数器

转化找出最长的子数组,0的个数不超过k个。

例如:nums = [1,1,1,0,0,0,1,1,1,1,0], K = 2

10f86caa83fdf0ab8436698e7af50bce

解法二:滑动窗口

  1. left = 0,right = 0

  2. 进窗口:left指向1无视,指向0计数器+1

  3. 判断(0的个数>k)->出窗口,不断循环

  4. 更新结果

  5. 等到right指向最后的时候,结束更新

39f36cc47d077221747a1d0fa26df97d


C++ 算法代码:

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;}
};

图解

例如:nums = [1,1,1,0,0,0,1,1,1,1,0], K = 2

39f36cc47d077221747a1d0fa26df97d

  1. ret = 0,left = 0, right = 0, zero = 0ret = max(ret, right - left + 1) = 1right++,right = 1

cea94161230ac9806a5f3f9cb22d5e88

  1. ret = 1,left = 0, right = 1, zero = 0ret = max(ret, right - left + 1) = 2right++,right = 2

479779063ae5f4774036be85f4039ae0

  1. ret = 2,left = 0, right = 2, zero = 0ret = max(ret, right - left + 1) = 3right++,right = 3

87f445e54ff67639492d8e939a36cfcf

  1. ret = 3,left = 0, right = 3, zero = 0nums[right] == 0 ->zero++,zero=1

    ret = max(ret, right - left + 1) = 4right++,right = 4

256dcceab34aefc487c9db3fade5dfca

  1. ret = 4,left = 0, right = 4, zero = 1nums[right] == 0 ->zero++,zero=2

    ret = max(ret, right - left + 1) = 5right++,right = 5

37c1b7e5c542552cffc81487eb7fe94e

  1. ret = 5,left = 0, right = 5, zero = 2nums[right] == 0 ->zero++,zero=3

    while(zero > k){ // 判断if(nums[left++] == 0){zero--;}
    }
    

    zero = 2,left = 4

    ret = max(ret, right - left + 1) = 5right++,right = 6

160ea2641239a3b863c7c60a1b0d8253

  1. 后面流程一样,就不多赘述了。

http://www.mrgr.cn/news/57239.html

相关文章:

  • 关于武汉芯景科技有限公司的限流开关芯片XJ6241开发指南(兼容LTC4411)
  • ProteinMPNN中负对数似然损失函数解读
  • log4j2.xml
  • Python数据分析NumPy和pandas(八、数组写入磁盘文件和从磁盘文件读取、线性代数计算和图形化)
  • 2024系统架构师---湖仓一体架构论文知识点
  • 禅道源码部署
  • 【Java面向对象三大特征——封装】
  • 青训营 X 豆包MarsCode 技术训练营--充电总时间计算
  • 智能体能和人工智能有什么区别?
  • 云岚到家系统优化
  • 8阻塞队列
  • Python项目内网环境pdm install超时httpx.ReadTimeout: timed out
  • Vue Router实现路由懒加载
  • 简记 Vue3(一)—— setup、ref、reactive、toRefs、toRef
  • Linux中如何理解一切皆文件
  • Python包——Matplotlib
  • 各种数据类型的定义与常规计算
  • 第23周Java主流框架入门-SpringMVC 3.拦截器
  • 【单元测试】深入解剖单元测试的思维逻辑
  • 【论文速看】DL最新进展20241023-多模态、无监督学习、多任务、图像修复
  • 【哈工大_操作系统实验】Lab8 终端设备的控制
  • 买华为系的车,这个理由无法拒绝
  • hass docker openwrt配置
  • 软件分享丨PDF Shaper
  • 不错的二次元个人导航页源码
  • 从新手到高手:map和set的使用技巧全攻略(C++)