题目链接
题目描述
给定一个二进制数组 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^5nums[i]不是0就是1.
解题思路
- 记录最大的连续1的个数
ans和当前的连续的1的个数now - 如果当前元素是1,则
now++,否则使用之前的连续的1的个数更新ans,并令now = 0 - 遍历数组结束之后,需要再次使用
now来更新ans,因为数组的最后一个元素可能是1,且最长连续1的子数组可能出现在数组的末尾,如果遍历数组结束之后不更新ans,则会导致结果错误
AC代码
class Solution {
public int findMaxConsecutiveOnes(int[] nums) {
int ans = 0;
int now = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] == 1) {
now++;
} else {
ans = Math.max(ans, now);
now = 0;
}
}
ans = Math.max(ans, now);
return ans;
}
}

8164

被折叠的 条评论
为什么被折叠?



