theme: smartblue
持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情
最大连续 1 的个数
题目解析
题目难度:简单
题目素材解析
这道题提供的素材如下所示:
- 一个二进制数数组。
注:该数组的长度在1到10000之间,并且其中的元素非0即1。
我的解读
对于这道题其实并不难,只要搞清如何判断连续值即可。
必须要有一个历史值才行,因为只有历史值才能找出最大连续的数值。
解题思路
下面就要开始梳理一下解题思路了,代码编写需要更细致的解析。
根据上面的解读,我们下面就一步步的写一下解题思路。
第一步,先来声明两个整型变量result、count。
第二步,进入循环体,在循环体内判断是否等于1,如果等于1,则count变量自增。
第三步,如果不等于1,则result变量取值原值和count值的最大值,随后再将count赋值为0。
第四步,结束循环体,最后获取result和count值中的最大值即可获得预期结果。
代码
具体代码编写如下所示,大家可以自行运行试一下。
```java public class Test {
public static void main(String[] args) {
Test test = new Test();
System.out.println(test.findMaxConsecutiveOnes(new int[]{1,0,1,1,1}));
}
public int findMaxConsecutiveOnes(int[] nums) {
int result = 0, count = 0;
for (int num : nums) {
if (num == 1) {
count++;
} else {
result = Math.max(result, count);
count = 0;
}
}
return Math.max(result, count);
}
} ```
执行结果
今天这个执行结果还是不错的。
如果你想要更高性能,可以试一下直接获取到每一个0出现的位置,然后通过这个0的位置进行隔离数组的长度。
然后通过比对每一截的长度来获取到最大连续值。
只是个思路,没有形成代码,只能由大家自行去试一下了。