114. Leetcode 53. 最大子数组和 (动态规划-子序列问题)
生活随笔
收集整理的這篇文章主要介紹了
114. Leetcode 53. 最大子数组和 (动态规划-子序列问题)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
步驟一、確定狀態(tài):
確定dp數(shù)組及下標(biāo)含義 dp[i]:包括下標(biāo)i之前的最大連續(xù)子序列和為dp[i]。
步驟二、推斷狀態(tài)方程:
dp[i]只有兩個(gè)方向可以推出來: dp[i - 1] + nums[i],即:nums[i]加入當(dāng)前連續(xù)子序列和 nums[i],
即:從頭開始計(jì)算當(dāng)前連續(xù)子序列和 一定是取最大的,所以dp[i] = max(dp[i - 1] + nums[i], nums[i]);
步驟三、規(guī)定初始條件:
初始條件:
全局初始化都是0,dp[0] = nums[0]
步驟四、計(jì)算順序:
遞推公式中dp[i]依賴于dp[i - 1]的狀態(tài),需要從前向后遍歷。
class Solution:def maxSubArray(self, nums: List[int]) -> int:if len(nums) == 0:return 0# 初始化dp = [0] * len(nums)dp[0] = nums[0]result = dp[0]# 遍歷for i in range(1, len(nums)):dp[i] = max(dp[i-1] + nums[i], nums[i])result = max(result, dp[i])return result總結(jié)
以上是生活随笔為你收集整理的114. Leetcode 53. 最大子数组和 (动态规划-子序列问题)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 113. Leetcode 674. 最
- 下一篇: 115. Leetcode 718. 最