zoukankan      html  css  js  c++  java
  • 最大连续1的个数 三 窗口大小固定,逻辑连续但实际上并不连续的滑动窗口

    1004 最大连续1的个数 三 窗口大小固定,逻辑连续但实际上并不连续的滑动窗口

    题目描述

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

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

    题目解析

    需要最多变化K个值使连续的子数组长度最大,由题目可以知道,0变为1且这些本改变的0一定是间隔连续的(假设i,j位置上的0变为了1,那么它们之间一定不存在0)。换句话说,就是求一个滑动窗口内包含0个数不超过K个,求这个滑动窗口的最大宽度

    题目特征

    1. 求窗口的大小
    2. 窗口是逻辑连续而不是实际连续的
    3. 收缩条件窗口内的0个数超过K

    题目解答

    class Solution {
        public int longestOnes(int[] A, int K) {
     		int sw = 0,len , res,l=0;
            len = A.length;
            for(int r =0 ; r < len ; r++){
                if(A[r] == 0)
                    sw++;
                while(sw > K)/*这里进行连续的收缩*/{
                    //这里等于跳过1的部分直接到0
                    if(A[l] == 0){
                        sw--;
                    }
                    l++;
                }
                res = Math.max(res,r-l+1);
            }
            return res;
        }
    }
    
    内容来自博客园,拒绝爬虫网站
  • 相关阅读:
    高精度加法
    高精度计算(一)
    算法总结
    崛起之路
    2015浙江高考满分作文汇总(9篇)
    努力
    NOIP2015总结
    P3197 [HNOI2008]越狱[组合数学]
    【原创】SPFA判负环
    P1351 联合权值[鬼畜解法]
  • 原文地址:https://www.cnblogs.com/Heliner/p/10971884.html
Copyright © 2011-2022 走看看