最长全1串

原文地址:https://www.jianshu.com/p/3c53dfd72334

问题描述

给你一个长度为\(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;
}

猜你喜欢

转载自www.cnblogs.com/cherrychenlee/p/10890449.html