首页 > 其他分享 >485. 最大连续 1 的个数

485. 最大连续 1 的个数

时间:2024-04-23 20:45:04浏览次数:31  
标签:temp nums int max 个数 连续 ans 485 prev

1.题目介绍

题目地址(485. 最大连续 1 的个数 - 力扣(LeetCode))

https://leetcode.cn/problems/max-consecutive-ones/

题目描述

给定一个二进制数组 nums , 计算其中最大连续 1 的个数。

 

示例 1:

输入:nums = [1,1,0,1,1,1]
输出:3
解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.

示例 2:

输入:nums = [1,0,1,1,0,1]
输出:2

 

提示:

  • 1 <= nums.length <= 105
  • nums[i] 不是 0 就是 1.

2.题解

2.1 暴力枚举

思路

遍历数组,找到连续次数最多的组合

代码

  • 语言支持:C++

C++ Code:


class Solution {
public:
    int findMaxConsecutiveOnes(vector<int>& nums) {
        int ans = 0, temp = 0;
        for(int i = 0; i < nums.size(); i++){
            if(nums[i] == 1){
                temp++;
            }else{
                ans = max(ans, temp);
                temp = 0;
            }
        }
        ans = max(ans, temp);
        return ans;
    }   
};

复杂度分析

令 n 为数组长度。

  • 时间复杂度:\(O(n)\)
  • 空间复杂度:\(O(n)\)

2.2 前缀和

思路

记录前缀和,最大的前缀和即为1出现的最大次数

代码

class Solution {
public:
    int findMaxConsecutiveOnes(vector<int>& nums) {
        int n = nums.size();
        vector<int> prev(n);
        for(int i = 0; i < n; i++){
            if(nums[i] == 0) continue;  
            if(i == 0) prev[i] = nums[i];
            else prev[i] = prev[i-1] + nums[i];            
        }
        return *max_element(prev.begin(),prev.end());
    }   
};

标签:temp,nums,int,max,个数,连续,ans,485,prev
From: https://www.cnblogs.com/trmbh12/p/18153694

相关文章

  • 手动输入一个数组,并调用函数算出数组之和
    /***********************************************************************************filename:005_数组之和.cauthor:[email protected]:2024/04/18function:手动输入一个数组,并算出数组之和note......
  • 找到一个数组中的最大最小值以及下标
    /***********************************************************************************filename:005_找到一个数组中的最大最小值以及下标.cauthor:[email protected]:2024/04/18function:找到一个数组中的最大......
  • 编写一个函数,找到两个数的最大公约数
    /***********************************************************************************filename:004_最大公约数.cauthor:[email protected]:2024/04/18function:算出两个数的最大公约数note:No......
  • 查找链表中倒数第k个数
    include<stdio.h>include<stdbool.h>include<stdlib.h>/********************************************************************函数名称: MinDelate函数功能:/*假设该链表只给出了头指针head。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k(......
  • 【js】两个数组对象合并成一个树结构的数据
    1模板2/**3*合并两个数组,将岗位信息按照部门进行分组4*@param{Array}array1岗位信息数组,每个岗位包含部门ID(deptId)、岗位ID(postId)和岗位名称(postName)5*@param{Array}array2部门信息数组,每个部门包含部门ID(id)和部门名称(label)6*@returns{Arr......
  • python读取一个文件里面几百个csv数据集然后按照列名合并一个数据集
    大家好,我是Python进阶者。一、前言前几天在Python最强王者交流群【FiNε_】问了一个Python自动化办公,问题如下:python读取一个文件里面几百个csv数据集然后按照列名合并一个数据集。二、实现过程这里【隔壁......
  • 对于小程序canvas在某些情况下touchmove 不能连续触发导致的签名不连续替代方案(企微)
    1.问题微信开放社区链接尝试过新版canvas,在企业微信中签名依然是依然断触,有问题的手机是iphoe15,系统版本以及企微版本微信版本均与签名正常的手机一致,但是那个手机就是无法正常签字,在微信中无论新旧canvas均能正常签字2.解决方案既然canvas的touchmove触发有问题,那......
  • 第十节 闭区间上连续函数的性质
    第十节闭区间上连续函数的性质一、有界性与最大值最小值定理对于在区间I上有定义的函数\(f(x)\),如果有\(x₀∈I\),使得对于任一\(x∈I\)都有\(f(x)≤f(x₀)(f(x)≥f(x₀))\),那么称$f(x₀)$是函数\(f(x)\)在区间I上的最大值(最小值)定理1:(有界性与最大值......
  • L1-009 N个数求和
    #include<bits/stdc++.h>usingnamespacestd;constintinf=0x3f3f3f3f;#definelllonglongstructFraction{ llfenzi,fenmu;};intgcd(inta,intb){ if(b==0)returna; returngcd(b,a%b);}intlcm(inta,intb){ returna/gcd(a,b)*b;}Fracti......
  • 2024-04-19---中等题---移动石子直到连续(贪心)
    移动石子直到连续(贪心)题目:思路:这道题是有小技巧的,和一些棋盘题有些类似。利用贪心的极致选择,可以直接把情况划分完。最少的移动次数:当三个石子连续放置的时候,最小移动次数为0.当三个石子中只要有两个石子的距离小于2,即可只需移动另外一个石子1次完成。其他情况都是最小2......