给定一个二进制数组 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
求大神看看哪里有问题