485. Max Consecutive Onesr (easy)
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.
这道 刚读完题的时候感觉和674挺像,但其实又挺多不一样的,
第一 这道里只有数字0,1
求的是1的连续最长子串长度
1 需要思考的纠结办法:标记一个子串的首位并相减
class Solution:
def findMaxConsecutiveOnes(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if(nums.count(1) == 0): return 0
maxlen = 1
start = nums.index(1)
length = 1
for i in range(start,len(nums)-1):
if(nums[i] == nums[i+1] == 1):
length += 1
maxlen = max(maxlen,length)
else: length = 1
return maxlen
Runtime: 124 ms, faster than 26.93% of Python3
2 不用动脑的简单办法(速度一样,但容易懂
因为这道题主要奇特在只有0,1,所以求长度等同于求一个连续子串的和~
class Solution:
def findMaxConsecutiveOnes(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
maxlen = 0
sum = 0
for i in range(len(nums)):
if(nums[i]):
sum += 1
maxlen = max(maxlen,sum)
else:sum = 0
return maxlen
Runtime: 124 ms, faster than 26.93% of Python3