1004. 最大连续1的个数 III

2020-07-06

1.题目描述

给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 。
返回仅包含 1 的最长(连续)子数组的长度。

2.题解

滑动窗口

3.代码

class Solution {
    
    
public:
    int longestOnes(vector<int>& A, int K) {
    
    
        int len=A.size();
        if (!len) return 0;
        int i=0,res=0,cnt=0;
        for (int j=0;j<len;j++){
    
    
            if (A[j]==0) cnt++;
            while (cnt>K){
    
    
                if (A[i]==0) cnt--;
                i++;
            }
            res=max(res,j-i+1);
        }
        return res;
    }
};
class Solution {
    
    
public:
    int longestOnes(vector<int>& A, int K) {
    
    
        int len=A.size();
        if (!len) return 0;
        int i=0,res=0,cnt=0;
        for (int j=0;j<len;j++){
    
    
            if (A[j]==0) cnt++;
            if (cnt>K){
    
    
                if (A[i]==0) cnt--;
                i++;
            }
            res=j-i+1;
        }
        return res;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_34600424/article/details/107165918