一、题目

image.png

二、分析与解答

题目转换为:找出最长连续子数组,该数组内最多包含 k 个 0。
滑动窗口:right 主动右移。

  1. class Solution {
  2. public int longestOnes(int[] nums, int k) {
  3. int n = nums.length;
  4. int left = 0,right = 0;
  5. int zeros = 0;
  6. int res = 0;
  7. while (right < n) {
  8. if(nums[right] == 0) {
  9. zeros++;
  10. }
  11. while(zeros > k) {
  12. if(nums[left++] == 0) {
  13. zeros--;
  14. }
  15. }
  16. res = Math.max(res,(right - left + 1));
  17. right++;
  18. }
  19. return res;
  20. }
  21. }