首页 > 其他分享 >33.最长连续子数组

33.最长连续子数组

时间:2023-12-20 23:23:21浏览次数:32  
标签:arr right 33 int 数组 ans zeroNum 最长

1.题目介绍

33.最长连续子数组
给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 ,返回仅包含 1 的最长(连续)子数组的长度
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512

示例1
输入例子:
[1,1,1,0,0,0,1,1,1,1,0],2
输出例子:
6
例子说明:
可以将输入中的第3个0和第4个0变成1,新数组为[1,1,1,0,0,1,1,1,1,1,1],因此最长连续1的子数组长度为6
示例2
输入例子:
[0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1],3
输出例子:
10
例子说明:
可以将输入中的第3个0、第4个0,第5个0都变成1,新数组为[0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1],因此最长连续1的子数组长度为10

2.题解

2.1 滑动窗口

思路

这里使用标记记录zero的个数,若为超过zero最大个数,即可向后拓展窗口,直到超过最大个数。
这时候将窗口左端向左移动,直到将一个0排除窗口,将标记个数减一,继续拓展窗口。

代码

import java.util.*;

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * @param arr int整型一维数组
     * @param k int整型 允许0变为1的个数
     * @return int整型
     */
    public int GetMaxConsecutiveOnes(int[] arr, int k) {
        int left = 0;
        int zeroNum = 0;
        int ans = 0;
        for (int right = 0; right < arr.length; right++){
            if (arr[right] == 0) zeroNum++;
            while (zeroNum > k){
                if (arr[left] == 0) zeroNum--;
                left++;
            }
            ans = Math.max(ans,right - left + 1);
        }
        return ans;
    }
}

标签:arr,right,33,int,数组,ans,zeroNum,最长
From: https://www.cnblogs.com/trmbh12/p/17917857.html

相关文章

  • 深入c语言中的数组
    在C语言中,数组是一种非常重要的数据结构,它可以用来存储一系列相同类型的数据。数组在C语言中被广泛应用于各种算法和数据处理中,因此了解和掌握数组的使用是非常重要的。数组的声明和初始化在C语言中,数组的声明和初始化非常简单。我们可以通过以下语法来声明和初始化一个数组:intarr......
  • 初中英语优秀范文100篇-033My Free Time-我的业余时间
    PDF格式公众号回复关键字:SHCZFW033记忆树1Ihavealotofthingstodoinmyfreetime.翻译我有很多空闲时间要做的事情。简化记忆事情句子结构主语(I):表示句子中的主体,即说话者本人。谓语(have):表示主体所进行的动作或状态,这里是“有”的意思。宾语(alotofthing......
  • AtCoder_abc333
    AtCoder_abc333比赛链接A-ThreeThrees题目描述输入一个\(N\)输出\(N\)个\(N\)。解题思路(这个题但凡学过都能写出来吧)Code//Problem:A-ThreeThrees//Contest:AtCoder-ToyotaProgrammingContest2023#8(AtCoderBeginnerContest333)//URL:https://a......
  • 数组属性和方法
    什么叫数组?在JavaScript中,数组不是基本类型,而是具有以下核心特征的Array对象:JavaScript数组是可调整大小的,并且可以包含不同的数据类型。(当不需要这些特征时,可以使用类型化数组。)JavaScript数组不是关联数组,因此,不能使用任意字符串作为索引访问数组元素,但必须使用非负整数(......
  • 断网或者杀死进程后,退出房间的最长时间
    RTCSDK5.1.13版本之前:一端杀进程,或是断网,server端会在60s后触发超时逻辑,另一端会收到对端离线的消息。不立刻发送通知是因为断网情况,server要兼容断线重连逻辑,需要对客户端的断网有一个容忍时长(目前是60s),也不会立即发送断线的通知。RTCSDK5.1.13版本及之后:可以提工单......
  • 560. 和为 K 的子数组
    给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。子数组是数组中元素的连续非空序列。 示例1:输入:nums=[1,1,1],k=2输出:2示例2:输入:nums=[1,2,3],k=3输出:2 提示:1<=nums.length<=2*104-1000<=nu......
  • P3386 【模板】二分图最大匹配
    原题链接洛谷题解很详细,自己写了些理解在代码注释里代码#include<bits/stdc++.h>usingnamespacestd;intatch[50005]={0};intvis[50005]={0};vector<int>G[505];intweiy(intnow)//让now在他的“仓库”里按顺序找下一个能连的右点,找得到返回1,找不到返回0{vis[n......
  • C题目分析:PTA二维数组中每行最大值和每行和
    *首先记住以下:算法框架从内到外。明确改变的条件。明确如何改变。明确导向结果。一。分析流程:输入——组成数组——输出数组和最大值二。细化:S1输入的格式:一行输入,中间空格,最后一格无空格。S2组成数组:运用二维数组,其中前四个数中间有三个空格,且第一个数前有三个空格,第四和五个数中......
  • js 数组的42种方法
    本文列举了数组的42个方法欢迎关注前端早茶,与广东靓仔携手共同进阶~前端早茶专注前端,一起结伴同行,紧跟业界发展步伐~公众号一、前言数组在js中作为一个非常重要的类型之一,在我们对数据处理,存储数据,条件渲染的时候经常会用到,所以随着ES的不断更新,数组的方法也......
  • 2023-12-20:用go语言,给定一个数组arr,长度为n,在其中要选两个不相交的子数组。 两个子数
    2023-12-20:用go语言,给定一个数组arr,长度为n,在其中要选两个不相交的子数组。两个子数组的累加和都要是T,返回所有满足情况中,两个子数组长度之和最小是多少?如果没有有效方法,返回-1。正式:2<=n<=10^60<=arr[i]<=100001<=T<=10^8扩展:2<=n<=10^6-10000<=arr[i]<=1......