LeetCode-Python-485. 最大連続1の個数
バイナリ配列を指定し、最大連続1の個数を計算します.
例1:
注意:入力配列は、 入力配列の長さは正の整数であり、10000を超えない.
第一の考え方:
直接暴力で解く.
2つ目の考え方:
ダイナミックプランニングは、0~iの最長連続1シーケンスの長さをdp[i]で表し、
明らかにdp[0]=nums[0],
iに対して!=0の場合、
dp[i] = dp[i - 1] + 1 if nums[i] == 1 OR
dp[i] = 0 if nums[i] != 1
例1:
: [1,1,0,1,1,1]
: 3
: 1, 1 3.
注意:
0
および1
のみを含む.第一の考え方:
直接暴力で解く.
class Solution(object):
def findMaxConsecutiveOnes(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
res = 0
l = 0
for i in nums:
if i:
l += 1
res = max(l, res)
else:
l = 0
return res
2つ目の考え方:
ダイナミックプランニングは、0~iの最長連続1シーケンスの長さをdp[i]で表し、
明らかにdp[0]=nums[0],
iに対して!=0の場合、
dp[i] = dp[i - 1] + 1 if nums[i] == 1 OR
dp[i] = 0 if nums[i] != 1
class Solution(object):
def findMaxConsecutiveOnes(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
dp = [nums[0]]
for i in range(1, len(nums)):
if nums[i]:
dp.append(dp[i-1] + 1)
else:
dp.append(0)
# print dp
return max(dp)