Leetcode-53.最大サブシーケンス和
Leetcode-53.最大サブシーケンス和
整数配列numsを指定し、最大和を持つ連続サブ配列(サブ配列には少なくとも1つの要素が含まれている)を見つけ、その最大和を返します.
例:
入力:[−2,1,−3,4,−1,2,1,−5,4],出力:6解釈:連続サブ配列[4,−1,2,1]の和が最大で6であった.ステップ:
複雑度O(n)の解法を実現した場合は,より優れた分治法を用いて解くことを試みた.
考え方:
ダイナミックプランニングの採用
dp[i]は、iで終わる連続サブシーケンスの最大値を意味する
実行時間:52 ms、すべてのpythonコミットで95.41%のユーザーを破った
メモリ消費量:12.9 MB、すべてのpythonコミットで5.12%のユーザーを破った
整数配列numsを指定し、最大和を持つ連続サブ配列(サブ配列には少なくとも1つの要素が含まれている)を見つけ、その最大和を返します.
例:
入力:[−2,1,−3,4,−1,2,1,−5,4],出力:6解釈:連続サブ配列[4,−1,2,1]の和が最大で6であった.ステップ:
複雑度O(n)の解法を実現した場合は,より優れた分治法を用いて解くことを試みた.
考え方:
ダイナミックプランニングの採用
dp[i]は、iで終わる連続サブシーケンスの最大値を意味する
class Solution(object):
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
dp=[]
dp.append(nums[0])
for i in range(1,len(nums)):
dp.append(max(dp[i-1]+nums[i],nums[i]))
return max(dp)
実行時間:52 ms、すべてのpythonコミットで95.41%のユーザーを破った
メモリ消費量:12.9 MB、すべてのpythonコミットで5.12%のユーザーを破った