力扣 485. 最大连续1的个数

题目说明

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

  • 输入的数组只包含 01
  • 输入数组的长度是正整数,且不超过 10,000。

示例

例1

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

笔者理解

此题是一道数组算法问题,在力扣题库中被定义为简单题。

解法

当笔者阅读完此题后,发现此题理解起来比较容易,直接动态更新连续1串长度最大值即可,让我们来看看具体如何实现的吧。

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public int findMaxConsecutiveOnes(int[] nums) {
int result = 0;
//暂存当前最大值

int tick = 0;
//标记连续1个数

for(int i=0;i<nums.length;i++){
if(nums[i]==0){
result = Math.max(result,tick);
//当遇到0时,存储一次连续1个数最大值

tick = 0;
//归零方便后面连续1累计

}
else{
tick++;
}
}
return Math.max(result,tick);
//预防最后一段连续1为最长连续1串

}

时间和空间效率都较高,可见此解法比较适合此题;

image.png

总结

本题是今天的每日一题,难度是简单,感兴趣的朋友都可以去尝试一下,此题还有其他更多的解法,朋友们可以自己逐一尝试。