【leetcode】最大连续1的个数合集

最大连续1的个数合集

(简单)问题描述:
在这里插入图片描述
把所有连续1的个数存在列表里,然后取最大值,空间消耗大

class Solution:
    def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
        n = 0
        l = []
        for i in range(len(nums)):
            if nums[i] == 1:
                n += 1
            else:
                l.append(n)
                n = 0
        l.append(n)
        return max(l)
                

在这里插入图片描述
不借助列表解法

class Solution:
    def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
        n = 0
        l=-1
        for i in range(len(nums)):
            if nums[i] == 1 and i!=len(nums)-1:
                n += 1
            elif nums[i] == 1 and i==len(nums)-1:
                l=max(l,n+1)
            else:
                if n>l:
                   l=n 
                n = 0
        if (l==-1):
            l=len(nums)
        return l

在这里插入图片描述
骚操作

class Solution:
    def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
        return max(len (substr) for substr in ''.join([str(x) for x in nums]).split("0"))

想到这个思路了,但是不会表达!!!
tips:

  1. 列表里的元素当做字符串连接到’'里,变成一个字符串型就可以进行分割
  2. .join()函数可以给字符串进行连接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值