跳至主要內容

1004. 最大连续1的个数 III

T4mako算法数组二分查找滑动窗口前缀和小于 1 分钟

1004. 最大连续1的个数 III

中等

题目描述open in new window

解题思路:

  • 使用滑动窗口,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