1004. 最大连续1的个数 III

给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 。

返回仅包含 1 的最长(连续)子数组的长度。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/max-consecutive-ones-iii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

滑动窗口

class Solution {
    public int longestOnes(int[] nums, int k) {
        if (nums == null || nums.length == 0) {
            return 0;
        }

        int ret = 0;
        int sum = 1 - nums[0];
        int l = 0, r = 0;

        while (r < nums.length) {
            if (sum <= k) {
                ret = Math.max(ret, r - l + 1);
                sum += ++r == nums.length ? 0 : (1 - nums[r]);
            } else {
                sum -= (1 - nums[l++]);
            }
        }

        return ret;
    }
}
posted @ 2021-12-15 18:31  Tianyiya  阅读(36)  评论(0)    收藏  举报