最大子序和 動態規劃

2021-09-24 15:50:12 字數 963 閱讀 8606

給定乙個整數陣列 nums ,找到乙個具有最大和的連續子陣列(子陣列最少包含乙個元素),返回其最大和。

示例:輸入: [-2,1,-3,4,-1,2,1,-5,4],

輸出: 6

解釋: 連續子陣列 [4,-1,2,1] 的和最大,為 6。

def maxsubarray(nums):

length = len(nums)

for i in range(1, length):

# 當前值的大小與前面的值之和比較,若當前值更大,則取當前值,捨棄前面的值之和

submaxsum = max(nums[i] + nums[i - 1], nums[i])

nums[i] = submaxsum # 將當前和最大的賦給nums[i],新的nums儲存的為和值

return max(nums)

alist=[-2,1,-3,4,-1,2,1,-5,4]

print(maxsubarray(alist))

def maxsubarray( nums):

""":type nums: list[int]

:rtype: int

"""# onesum維護當前的和

onesum = 0

maxsum = nums[0]

for i in range(len(nums)):

onesum += nums[i]

maxsum = max(maxsum, onesum)

# 出現onesum<0的情況,就設為0,重新累積和

if onesum < 0:

onesum = 0

return maxsum

alist=[-2,1,-3,4,-1,2,1,-5,4]

print(alist)

print(maxsubarray(alist))

動態規劃 最大子序和

給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 1 輸入 nums 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6 示例 2 輸入 nums 1 輸出 1 示例 3 輸入 nums 0 輸出 0...

動態規劃 最大子序和

今天總結一下有關動態規劃問題中最大子序和的問題。53.最大子陣列和 題目要求給定乙個陣列,讓我們求出最大連續子陣列的和。我們使用動態規劃來解決此類問題。dp i 表示以nums i 結尾的連續子串行的和的最大值。那麼我們要求的答案就是max.其狀態轉移方程很容易就看出為dp i max dp i d...

最大子序和 動態規劃

給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。只求最大子序和,不是最大子序區間 假設 nums 陣列的長度是 n,下標從 0 到 n 1。...