給定一個二進制數組 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
求大神看看哪裡有問題