最值算法_485
题目
来源:485. 最大连续 1 的个数
难度:简单
给定一个二进制数组
n
u
m
s
nums
nums , 计算其中最大连续
1
1
1的个数。
1 < n u m s . l e n g t h ≤ 1 0 5 1<nums.length\le10^5 1<nums.length≤105
n u m s [ i ] nums[i] nums[i] 不是 0 0 0 就是 1 1 1
解题思路
- 初始化两个数,一个用来计数1的个数,另一个用来存当前最大连续1的个数。
- 遍历数组,遇到1就让计数加一;遇到0就让当前1的计数与最大1计数相比,如果当前计数大,将其令为最大1计数。
- 为了避免数组中没有0,在遍历结束后再进行一次上一步操作。
代码
class Solution:
def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
oneMax = 0 #最大1计数
oneNum = 0 #当前1计数
for i in range(len(nums)):
if nums[i] == 1:
oneNum += 1
else:
if oneNum >= oneMax:
oneMax = oneNum
oneNum = 0
if oneNum >= oneMax:
oneMax = oneNum
return oneMax