LeetCode刷题记录(三十九):最大连续 1 的个数


theme: smartblue

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情

最大连续 1 的个数

image.png

题目解析

题目难度:简单
题目素材解析

这道题提供的素材如下所示:

  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的位置进行隔离数组的长度。

然后通过比对每一截的长度来获取到最大连续值。

只是个思路,没有形成代码,只能由大家自行去试一下了。

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ijiran

一杯咖啡太贵,一块糖就可以

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值