最长全1串

问题描述

给你一个长度为N的01串,定义“答案”=该串中最长的连续1的长度。现有K次机会将其中的某个0改为1,现在求最大可能“答案”。

解题思路

遍历这N个数,将为0的位置push进数组vec中,只考虑数组中存放的这些位置。

程序实现

#include<bits/stdc++.h>
using namespace std;

vector<int> vec;

int main(){
    int n,k,x;
    cin>>n>>k;
    for(int i=1;i<=n;i++){
        cin>>x;
        if(x==0) vec.push_back(i); 
    }
    int maxLen=vec[k]-1; //初始化maxLen为vec[k]-1
    for(int i=k+1;i<vec.size();i++){
        //vec[i]-vec[i-k-1]-1就是将i-k-1到i之间的0变为1的长度
        maxLen=max(maxLen,vec[i]-vec[i-k-1]-1); 
    }
    cout<<maxLen<<endl;
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,429评论 0 2
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,275评论 0 4
  • 前言 2. 实现 Singleton 3. 数组中重复的数字 4. 二维数组中的查找 5. 替换空格 6. 从尾到...
    Observer_____阅读 3,021评论 0 1
  • 容器 在实际的开发过程中, 数据结构本身的重要性不会逊于操作于数据结构的算法的重要性, 当程序中存在着对时间要求很...
    编程小兔崽阅读 1,121评论 0 1
  • 空气中弥漫着动物尸体的哀嚎 迎接下一场城市喧嚣的浊浪 是地狱般钢筋水泥进攻的号角 把夜晚撕成水性杨花的睡衣 爱情是...
    稻城阳光阅读 353评论 2 12