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; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了