最大连续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; }