最大连续1的个数

题目:

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

思路:

图片说明

滑动区间模板:

图片说明

public static int longestOnes(int[] nums, int k) {
        int N = nums.length;//数组长度
        int res = 0;//存放滑动窗口的长度,即结果
        int left = 0, right = 0; //滑动窗口的左右指针
        int zeros = 0;//滑动窗口中0的个数

        while (right < N) {
            if (nums[right] == 0)
                zeros ++;
            while (zeros > k) {//当前滑动窗口中的0的个数超过了k个
                if (nums[left++] == 0)//向右移动left,直至窗口中的0的个数小于等于K
                    zeros --;
            }
            res = Math.max(res, right - left + 1);
            right ++;
        }
        return res;
    }
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务