LeetCode 485、最大连续 1 的个数
LeetCode 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 <= 10^5
nums[i]
不是0
就是1
.
二、题目解析
三、参考代码
class Solution(object):
def findMaxConsecutiveOnes(self, nums):
# 最后一个 0 所在的索引位置
lastZero = -1
# 结果
ans = 0
# 从左到右访问数组 nums
for i, num in enumerate(nums):
# 1、当前元素为 0 ,更新 lastZero
if num == 0:
lastZero = i
# 2、否则说明当前元素为 1
else:
# 通过 lastZero 可以获取当前元素距离最前面的 1 的个数
# 对比之前的 ans ,更新获取最大值
ans = max(ans, i - lastZero)
# 返回结果
return ans
参考代码
#include <vector>
#include <algorithm>
using namespace std;
class Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
// 最后一个 0 所在的索引位置
int lastZero = -1;
// 结果
int ans = 0;
// 从左到右访问数组 nums
for (int i = 0; i < nums.size(); ++i) {
// 1、当前元素为 0 ,更新 lastZero
if (nums[i] == 0) {
lastZero = i;
}
// 2、否则说明当前元素为 1
else {
// 通过 lastZero 可以获取当前元素距离最前面的 1 的个数
// 对比之前的 ans ,更新获取最大值
ans = max(ans, i - lastZero);
}
}
// 返回结果
return ans;
}
};