leetcode_485. 最大连续 1 的个数

目录

一、题目内容

二、解题思路

三、代码


一、题目内容

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

示例:

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

提示:

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

二、解题思路

1.直接记录长度然后每次比较大小即可;

2.滑动窗口,每次增加窗口长度,直到为0则记录长度并比较当前最大的长度,然后重新从为1的地方开始记录长度,如此反复比较即可;

三、代码

class Solution:
    def findMaxConsecutiveOnes1(self, nums: list) -> int:
        count = 0
        ans = 0
        for num in nums:
            if num == 1:
                count += 1
                ans = max(ans, count)
            else:
                count = 0
        return ans

    def findMaxConsecutiveOnes2(self, nums: list) -> int:
        left, right = 0, 0
        ans = 0
        while right < len(nums):
            if nums[right] == 1:
                right += 1
            else:
                ans = max(ans, right - left)
                right += 1
                left = right
        ans = max(ans, right - left)
        return ans


if __name__ == '__main__':
    s = Solution()
    nums = [1, 1, 0, 1, 1, 1]
    ans1 = s.findMaxConsecutiveOnes1(nums)
    print(ans1)
    ans2 = s.findMaxConsecutiveOnes2(nums)
    print(ans2)
悲恋花丶无心之人 CSDN认证博客专家 深度学习 神经网络 Pytorch
计算机视觉在读研究生,熟悉Pytorch,MXNet,TensorFlow,Keras等深度学习框架,主要涉及的领域有目标检测,语义分割,超分辨率重建,行人重识别等。
个人GitHub网址为:https://github.com/nickhuang1996
相关推荐
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页
实付 29.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值