标签:最大连续 -- while color 包含 span 1的个数 button one
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
解题思路 通过一个对零计数的变量准确计数,再设计一个起点坐标,在通过循环控制零的数目,来保证与K相同,当不同时则跳过到下一个符合要求的序列中。
1 class Solution { 2 public int longestOnes(int[] A, int K) { 3 int cnt=0; 4 int pos=0; 5 int ans=0; 6 for(int i=0;i<A.length;i++){ 7 if(A[i]==0)cnt++; 8 while(cnt>K){ 9 if(A[pos]==0)cnt--; 10 pos++; 11 } 12 ans=Math.max(ans,i-pos+1); 13 } 14 15 return ans; 16 } 17 }
标签:最大连续 -- while color 包含 span 1的个数 button one
原文地址:https://www.cnblogs.com/hwhWorld/p/10493739.html