leetcode 485. Max Consecutive Ones
Given a binary array, find the maximum number of consecutive 1s in this array.
Example 1:
Input: [1,1,0,1,1,1] Output: 3 Explanation: The first two digits or the last three digits are consecutive 1s. The maximum number of consecutive 1s is 3.
Note:
- The input array will only contain
0
and1
. - The length of input array is a positive integer and will not exceed 10,000
解法1: 贪心,看到1就一直计数。
class Solution(object): def findMaxConsecutiveOnes(self, nums): """ :type nums: List[int] :rtype: int """ ans = 0 i = 0 length = len(nums) while i<length: ones = 0 while i<length and nums[i] == 1: i += 1 ones += 1 i += 1 # i == length or nums[i]==0 ans = max(ones, ans) return ans
OR:
class Solution(object): def findMaxConsecutiveOnes(self, nums): """ :type nums: List[int] :rtype: int """ # greedy ans = 0 i = 0 length = len(nums) while i<length: while i<length and nums[i] == 0: i += 1 if i==length: break ones = 0 while i<length and nums[i] == 1: i += 1 ones += 1 ans = max(ones, ans) return ans
解法2:
使用计数器,看到1就+1,看到0就reset计数器为0.
class Solution(object): def findMaxConsecutiveOnes(self, nums): """ :type nums: List[int] :rtype: int """ ans = 0 ones = 0 for n in nums: if n == 0: ones = 0 else: ones += 1 ans = max(ones, ans) return ans