485. 最大连续 1 的个数
题目描述
给定一个二进制数组 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.
解题方法
- C 遍历取最大
// #define MAX(a, b) ((a) > (b) ? (a) : (b)) // 取最大值 int my_max(int a, int b) { if (a > b) return a; else return b; } int findMaxConsecutiveOnes(int* nums, int numsSize) { int max_cnt = 0, cnt = 0; // 定义最大计数变量,计数变量 for (int i = 0; i < numsSize; i++) { if (nums[i] == 1) { cnt++; // 对 1 计数 } else { max_cnt = my_max(max_cnt, cnt); // 存储最大 1 的个数 cnt = 0; // 重新计数 } } max_cnt = my_max(max_cnt, cnt); return max_cnt; }
复杂度分析
时间复杂度为 O(n),其中 n 是数组的长度。
空间复杂度为 O(1)。