Leetcode_485. 最大连续 1 的个数

题目描述

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

示例:

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

提示:

输入的数组只包含 0 和 1 。
输入数组的长度是正整数,且不超过 10,000。
复制代码

参考实现

示例1

由于要累计最大连续 1 的个数,且数组元素只有0,1,遇到不连续的时候,需要标记之前连续1的长度,借助小学数学知识 num * 0 = 0 的知识,可以实现如下

复制代码
class Solution:
    def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
        '''
        返回最含485. 最大连续 1 的个数
        :param nums:0 ,1 组成的列表
        :return:最大连续 1 的个数
        '''
        num, maxLen = 0, 0
        for i in nums:
            '''
            遇到元素为 0,num 则为 0
            否则:num 为连续1的个数
            比如 nums = [0,1,1,0]
            nums[0] = 0:num = 0,maxLen = 0
            nums[1] = 1;num = 1,maxLen = 1 
            nums[2] = 1;num = 2,maxLen = 2 
            nums[3] = 0;num = 0,maxLen = 2 (此时 num > maxLen 不满足,不会执行maxLen = num)
            '''
            num = num * i + i
            if num > maxLen:
                maxLen = num
        return maxLen
复制代码

 另一种实现 

复制代码
def findMaxConsecutiveOnes01(nums: List[int]) -> int:
    if nums is None or len(nums) == 0:
        return 0
    else:
        num, max_num = 0, 0

        for i in range(0, len(nums)):
            if nums[i] == 1:
                num += 1
            else:
                num = 0
            max_num = max(num, max_num)
        return max_num
复制代码

Java 实现

复制代码
    public static int findMaxConsecutiveOnes(int[] nums) {
        int m = 0, n = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] == 1) {
                m++;
            } else {
                m = 0;
            }
            n = Math.max(m, n);
        }
        return n;
    }
复制代码

 

posted @   晓枫的春天  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示