1004. 最大连续1的个数 III
小于 1 分钟
1004. 最大连续1的个数 III
中等解题思路:
- 使用滑动窗口,rihgt在变动时,left也跟着边。
- 当
right为1时或者left到right中的0个数小于k,不断移动rihgt - 当
right为0,由于上一个条件判断为right < k。因此此时left与right中间的0的个数等于k。
故更新res更新left,直到left指向第一个0的后一位
class Solution {
public int longestOnes(int[] nums, int k) {
int n=nums.length,l,r,cnt=0,res=0;
for(l=r=0;l<n;){
while(r<n&&(nums[r]==1||cnt<k)) if(nums[r++]==0) cnt++;
if(r-l>res) res=r-l;
if(nums[l++]==0) cnt--;
}
return res;
}
}
Powered by Waline v2.15.5