租车网站模板下载,晋城城乡建设局网站,企业网站建设硬件,加强部门网页建设给定一个由若干 0 和 1 组成的数组 A#xff0c;我们最多可以将 K 个值从 0 变成 1 。
返回仅包含 1 的最长#xff08;连续#xff09;子数组的长度。 示例 1#xff1a;
输入#xff1a;A [1,1,1,0,0,0,1,1,1,1,0], K 2 输出#xff1a;6 解释#xff1a; [1,1,1…给定一个由若干 0 和 1 组成的数组 A我们最多可以将 K 个值从 0 变成 1 。
返回仅包含 1 的最长连续子数组的长度。 示例 1
输入A [1,1,1,0,0,0,1,1,1,1,0], K 2 输出6 解释 [1,1,1,0,0,1,1,1,1,1,1] 粗体数字从 0 翻转到 1最长的子数组长度为 6。 示例 2
输入A [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], K 3 输出10 解释 [0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1] 粗体数字从 0 翻转到 1最长的子数组长度为 10。
提示
1 A.length 20000 0 K A.length A[i] 为 0 或 1
思路双指针滑动窗口
提交的代码
class Solution { public int longestOnes(int[] nums, int k) { int i0,j0,sum0,max0; for(j0;jnums.length;) { if(nums[j]1) { sum; j; } else if(nums[j]0k0) { k--; sum; j; } else //如果k为0且当前字段最后一位为0向后滑动前面的字段开始退位 { sum--; if(nums[i]0) { k; } i; } max Math.max(sum, max); } return max; } }
完整的代码 public class Solution1004 { public static int longestOnes(int[] nums, int k) { int i0,j0,sum0,max0; for(j0;jnums.length;) { if(nums[j]1) { sum; j; } else if(nums[j]0k0) { k--; sum; j; } else { sum--; if(nums[i]0) { k; } i; } max Math.max(sum, max); } return max; } public static void main(String[] args) { int[] nums {0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1}; int k 3; System.out.println(longestOnes(nums,k)); } }