|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目描述:
- 给定一个由若干 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。
-
- 提示:
- 1 <= A.length <= 20000
- 0 <= K <= A.length
- A[i] 为 0 或 1
复制代码
- class Solution {
- public:
- int longestOnes(vector<int>& A, int K) {
- //滑动窗口
- int left = 0, right = 0;
- int res = 0;
- int store = 0;
- int len = A.size();
- while(right < len){
- //扩大窗口
- if(A[right++] == 0)store++;
- //缩小窗口
- if(store > K){
- if(A[left++] == 0)store--;
- }
- res = max(res, right - left);
- }
- return res;
- }
- };
复制代码 |
|