[LeetCode][Python]485. 最大连续1的个数

[LeetCode][Python]485. 最大连续1的个数

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

示例 1:

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

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

思路:

  1. 单指针遍历,若遇到1,flag + 1, 遇到0,判断此时flag是否大于ans记录的个数,若是,令ans = flag,且让flag初始化。 若否,只让flag初始化。最终剩下的ans就是最大连续1的个数。

  2. 把数组转成字符串后,使用0去split

  3. 定义两个指针:结果指针和计数指针res,counter。依次遍历数组,如果值是1,则counter+1,否则,结果值取当前结果值和counter的最大值,counter复位为0

#! /usr/bin/env python
#coding=utf-8
class Solution(object):
    def findMaxConsecutiveOnes(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        flag = 0
        ans = 0
        for e in nums:
            if e ==1:
                flag += 1
            else:
                if ans < flag:
                    ans = flag
                    flag = 0
                else:
                    flag = 0
        if ans < flag:
            ans = flag
            return ans

    def findMaxConsecutiveOnes2(self, nums):
        return len(max(''.join(map(str, nums)).split("0")))

    def findMaxConsecutiveOnes3(self, nums):
        res = counter = 0
        for n in nums:
            if n:
                counter += 1
            else:
                res = max(res, counter)
                counter = 0
            return max(res, counter)

你可能感兴趣的:([LeetCode][Python]485. 最大连续1的个数)