【LeetCode】最大连续 1 的个数
admin
2024-04-17 07:16:29
0

485. 最大连续 1 的个数

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

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

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

暴力循环

代码

//
// Created by mxz on 2022/12/4.
//
#include 
#include using namespace std;class Solution {
public:int findMaxConsecutiveOnes(vector &nums) {int s = nums.size();int c = 0;int r = 0;for (int i = 0; i < s; ++i) {if (nums[i] == 1) {c++;}if (nums[i] == 0 || i == s - 1) {r = max(c, r);c = 0;}}return r;}
};int main() {Solution solution;/// vector 向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container),顺序序列,动态数组,能够感知内存分配器的(Allocator-aware)/// vector list;  vector list1 = list2, vector list2(list); vector list = {1, 2, 3};/// vector list2(list.begin()+2,list.end()-1); vector list(7); vector list5(7, 3);vector vecTemp = {1, 1, 0, 1, 1, 1};vector list2(vecTemp.begin() + 2, vecTemp.end() - 1);vector::iterator it;for (it = list2.begin(); it != list2.end(); it++) {cout << *it << endl;}for (int i = 0; i < list2.size(); ++i) {}cout << solution.findMaxConsecutiveOnes(list2) << endl;return 0;
}
0
1
1
2

时间复杂度 O(n) n 为数组长度, 空间复杂度为 O(1)。

滑动窗口

  1. 设定连个指针first和second.为了确定什么时候开始计数,需要定义一个标志位flag;
  2. 先保持first不变,移动second,当遇到第一个1的时候,将second的下标赋值给first,并将标志位设置为1,即fisrt=second,flag= 1;
  3. 当Second遇到0并且flag = 1 的时候,flag=1是为了保证是在元素为1的滑动窗口中。此时,计算窗口中元素1的个数,然后将flag = 0;
  4. 当遍历完元素的时候,为了避免最后一个元素没有被处理,因此在循环结束是需要在计算下元素的个数。

代码

	int findMaxConsecutiveOnes(vector &nums) {int first = 0, second = 0, ans = 0, flag = 0;/// 0, 1, 1, 0while (second < nums.size()) {if (nums[second] == 1 && flag == 0) {first = second;flag = 1;} else if (nums[second] == 0 && flag) {ans = max(ans, second - first);flag = 0;}second++;}if (nums[first] == 1 && flag) {ans = max(ans, second - first);}return ans;}

时间复杂度 O(n) n 为数组长度, 空间复杂度为 O(1)。

相关内容

热门资讯

2026年值得一玩的五大经典大... 大亨类游戏是对商业逻辑与经济系统深度模拟的代表作,强调策略性规划与长期决策能力。玩家需在虚拟世界中逐...
DuelCorp游戏延迟高、丢... 近期,DuelCorp玩家社区中热度持续攀升的焦点问题,集中于网络体验层面——“DuelCorp延迟...
2026热门继承者类游戏推荐:... 2026年值得关注的继承主题类手游有哪些?这类作品往往围绕权力交接、家族使命或古老荣光的延续展开,通...
PUBG加速器推荐:2024年... 作为全球范围内广受欢迎的战术竞技类游戏,《PUBG》凭借其独特的“大吉大利,今晚吃鸡”胜利语音深入人...
《饥荒》新手详细建家教程 巨人... 第1页:展开在《饥荒》游戏中建家绝对是非常重要的,没有基地就相当于瞎玩,今天就为大家带来了饥荒新手详...
《饥荒》强力怪物属性特点及打法... 第1页:狗、海象、触手展开《饥荒》里面有些怪物比较厉害,伤害高还挺聪明,今天就为大家带来了饥荒强力怪...
《使命召唤4重制版》全成就达成... 第1页:展开《使命召唤4重置版》高清的画面收到了玩家的一致好评,你是不是正在战火硝烟中穿梭呢?今天我...
《口袋妖怪月亮》主线流程解说视... 第1页:第一期展开《口袋妖怪月亮》是口袋妖怪日月的月亮版本,在此版本中很多宠物都可以进行夜间进化,在...
洛克王国世界好玩吗?真实玩家体... 洛克王国世界好玩吗?提起这个名字,许多玩家脑海中立刻浮现出充满童趣的魔法记忆:结伴穿梭于彼得大道,驻...
最强斗王T0英雄推荐及高胜率阵... 许多新人玩家初次接触《最强斗王》,常因角色池庞大、养成路径复杂而难以抉择——究竟哪些英雄属于当前版本...