LeetCode 53 最大子串行和

2021-09-24 09:56:12 字數 879 閱讀 9321

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

示例:

輸入:[-2,1,-3,4,-1,2,1,-5,4],輸出:6解釋:連續子陣列 [4,-1,2,1] 的和最大,為 6。
高階:

如果你已經實現複雜度為 o(n) 的解法,嘗試使用更為精妙的分治法求解。

動態規劃

/**

* @param nums

* @return

*/var maxsubarray = function(nums)

let global_max = 0, local_max = 0

for (num of nums)

return global_max

};

動態規劃

class solution:

def maxsubarray(self, nums: list[int]) -> int:

if max(nums)<0:

return max(nums)

local_max, global_max = 0,0

for num in nums:

local_max = max(local_max+num,0)

global_max = max(local_max, global_max)

return global_max

由於分治法並不是最優的,所以先不列出來了。

Leetcode 53最大子串行和

int maxsubarray vectornums int res dp 0 for int i 1 i len i return res 第 1 步 定義狀態 既然乙個連續子陣列一定要以乙個數作為結尾,那麼我們就將狀態定義成如下。dp i 表示以nums i 結尾的連續子陣列的最大和。第 2 步...

Leetcode53 最大子串行和

給定乙個整數陣列nums,找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。核心思想就是檢查之前 i 1 的元素和,如果小於零就捨棄 對應下面第六行 1 class solution 9return max nums 10 11 關於動態轉移方程建立的分析如下 摘自 1 clas...

LeetCode53最大子序和

給定乙個序列 至少含有 1 個數 從該序列中尋找乙個連續的子串行,使得子串行的和最大。例如,給定序列 2,1,3,4,1,2,1,5,4 連續子串行 4,1,2,1 的和最大,為6。擴充套件練習 若你已實現複雜度為 o n 的解法,嘗試使用更為精妙的分治法求解。一開始用的最簡單最直接的方法,挨個的把...