1004. 最大连续1的个数 III

给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 。

返回仅包含 1 的最长(连续)子数组的长度。

示例 1:

输入:A = [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:

输入:A = [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。

解题

  • [ l e f t , r i g h t ] [left,right] 表示窗口,移动right 遍历数组
  • right = 1 时,++right
  • right = 0 时,0的数量小于K时,++right
  • right = 0 时,0的数量等于K时,为了容纳 right 处的0,left 移动过一个0 时,才可以容纳下 right 处的0

代码:

class Solution {    //C++
public:
int longestOnes(vector<int>& A, int K) {
int left = 0, right, maxlen = 0;
for(right = 0; right < A.size(); ++right)
{
if(A[right]==0)
{
if(K == 0)
{
while(A[left] == 1)//等于0退出
++left;
++left;//退出了一个0
}
else//k不为0,0变成1的数量还没满
{
--K;
}
}
maxlen = max(maxlen,right-left+1);
}
return maxlen;
}
};

最新文章

  1. MySQL模糊查询
  2. R语言学习笔记(二)
  3. 配置Pylint for Python3.5
  4. HDU 4513 吉哥系列故事——完美队形II manacher
  5. oracle——session
  6. Java操作zip压缩和解压缩文件工具类
  7. 在Word中为标题样式添加自动编号功能
  8. SpringMVC 学习-拦截器 HandlerInterceptor 类
  9. alive pdf 基本用法
  10. 51. leetcode 530. Minimum Absolute Difference in BST
  11. UEditor单图上传跨域问题解决方案
  12. maven的安装和环境配置
  13. springboot 2.1.4 源码默认logback-spring.xml
  14. 【Unity]】AR小工具-Vuforia
  15. PostGIS集群
  16. vue-电脑端导出-txt
  17. U3D 贴图通道分离后为什么能减小体积
  18. C# sqlserver ExecuteNonQuery()方法详解
  19. Jenkins 在mac平台的安装与配置
  20. Android类装载器DexClassLoader的简单使用-----制作android插件的前奏

热门文章

  1. 【LeetCode】316. 去除重复字母
  2. Docker入门第五章
  3. 华为应用市场更新APP多次被拒
  4. pikachu 不安全的url跳转
  5. Django 反向解析 request CBV
  6. spring cloud 知识总结
  7. 【springboot】过滤器、监听器、拦截器,Aspect切片
  8. 消除不受信任的HTML (来防止XSS攻击)
  9. 使用DOM方法来遍历一个文档
  10. Redis常用技术