[零基础-每日leetcode]No.485 两数之和python

该博客讨论了一个二进制数组问题,目标是找出数组中最大连续1的个数。作者提供了两种解决方案,一种是通过迭代更新当前连续1的个数(cur)并与最大值(res)进行比较;另一种思路则是使用双指针方法,但出现了错误。博客强调了正确理解题目条件的重要性。
摘要由CSDN通过智能技术生成

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

示例 1:

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

输入:nums = [1,0,1,1,0,1]
输出:2

思路:题目确定连续数为1,则if判定语句为 i 是否为1。求最大数,则需要对比,需要创建两个变量,一个是cur当前连续1的个数,另一个是res最大连续1的个数。当i向下遍历,数字为1时加1,为0时,cur与max对比,(若cur大)将当前个数存入res中,cur清空。

class Solution(object):
    def findMaxConsecutiveOnes(self, nums):
        res = 0 # 最大个数
        cur = 0 # 当前个数
        for i in nums: # 向下遍历
            if i ==1:  # 如果元素为1
                cur += 1  # 当前个数+1
                res = max(res, cur) # 和最大个数对比,将最大的存为res        
            else: # 如果与元素不为1,则不是连续,就清空cur
    #(比如连续4次都为1,第5次是0,则跳到else语句,虽然清空cur,但上一次连续4次已通过if语句存入res)
                cur = 0
        return res

一些其他思路:审题时没有看到要求为1,因此将题目理解为:

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

个人思路是创建两个指针,i和j,i从0开始,j从i + 1开始,对比两者,如果相等,则cur+1,i、j指针向下移动,不等则清空0。报错

class Solution(object):
    def findMaxConsecutiveOnes(self, nums):
        res = 0 # 最大个数
        cur = 0 # 当前个数 
        i = 0    
        j = i + 1
        for i in range(0, len(nums)): # 向下遍历
                if nums[i] == nums[j]: 
                    cur += 1  # 当前个数+1
                    res = max(res, cur) # 和最大个数对比,将最大的存为res   
                    j += 1    
                    i += 1               
                else: # 如果与元素不为1,则不是连续,就清空cur
                    cur = 0             
        return res

求大神看看哪里有问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值