2021-01-03 | 53. 最大子序和
1. 題目描述
給定一個整數陣列 nums ,找到一個具有最大和的連續子陣列(子陣列最少包含一個元素),返回其最大和。
示例:
輸入: [-2,1,-3,4,-1,2,1,-5,4]
輸出: 6
解釋: 連續子陣列 [4,-1,2,1] 的和最大,為 6。
進階:
如果你已經實現複雜度為 O(n) 的解法,嘗試使用更為精妙的分治法求解。
2. 解題思路
這裡我們使用動態規劃來解決這個問題,當前最大連續子序列和sum,結果為res:
- 如果sum > 0,則說明 sum 對結果有增益效果,則 sum 保留並加上當前遍歷數字
- 如果 sum <= 0,則說明 sum 對結果無增益效果,需要捨棄,則 sum 直接更新為當前遍歷數字
每次遍歷都比較res和sum的大小,將最大值賦值為res,遍歷結束後就返回結果。
複雜度分析:
- 時間複雜度:O(n),其中n是陣列nums的長度,需要對整個陣列進行遍歷。
- 空間複雜度:O(1)
3. 程式碼實現
/**
* @param {number[]} nums
* @return {number}
*/
var maxSubArray = function(nums) {
let sum = 0, res = nums[0]
for(let num of nums){
sum > 0 ? sum += num : sum = num
res = Math.max(sum, res)
}
return res
};
4. 提交結果
相關文章
- 53. 最大子序和(python3)Python
- 53. 最大子序和(劍指 Offer 42)
- 53. 最大子陣列和陣列
- leetcode_最大子序和LeetCode
- 【刷演算法】LeetCode.53-最大子序和演算法LeetCode
- 程式碼隨想錄演算法訓練營day44| 1143.最長公共子序列 1035.不相交的線 53. 最大子序和 392.判斷子序列演算法
- 程式碼隨想錄演算法訓練營第50天 | 1143.最長公共子序列 、1035.不相交的線 、53. 最大子序和、392.判斷子序列演算法
- 程式碼隨想錄演算法訓練營第五十三天| ● 1143.最長公共子序列 ● 1035.不相交的線 ● 53. 最大子序和 動態規劃演算法動態規劃
- 【LeetCode】【分治法】連續數列(最大子序和)思路解析和程式碼LeetCode
- 順序表應用7:最大子段和之分治遞迴法遞迴
- 程式碼隨想錄演算法訓練營第31天 | 貪心演算法 455.分發餅乾 、376. 擺動序列、53. 最大子序和演算法
- 順序表應用8:最大子段和之動態規劃法動態規劃
- 最大子列和問題
- 2021-01-03 BigDecimalDecimal
- 【51nod】最大子段和
- 動態規劃求解最大子段和 (兩種寫法+還原最優解)動態規劃
- [Python手撕]最大子陣列和Python陣列
- LeetCode53. 最大子陣列和LeetCode陣列
- [-演算法篇-] 最大子序列和演算法
- 最大連續子陣列和(最大子段和)陣列
- 2021-01-03自我介紹
- 【力扣】最大子陣列和(貪心)力扣陣列
- 程式碼隨想錄演算法訓練營第三十一天 | 455.分發餅乾 376.擺動序列 53.最大子陣列和演算法陣列
- 大端序和小端序
- 51nod 1254 最大子段和 V2
- 山海經:線段樹維護最大子段和
- Go技術日報(2021-01-03)Go
- 【刷題筆記】LeetCode-53 最大子陣列和筆記LeetCode陣列
- 求二維陣列中最大子陣列的和陣列
- 遞迴和迭代實現二叉樹先序、中序、後序和層序遍歷遞迴二叉樹
- 2021-01-03 | 86. 分隔連結串列
- #1502 : 最大子矩陣矩陣
- 從0打卡leetcode之day 3 -- 最大子序列和LeetCode
- 動態規劃---例題3.最大子段和問題動態規劃
- modbus和位元組序
- # 2021-01-03 #「GNU Emacs」- 快速切換視窗(Window)Mac
- 分治法 && 動態規劃 洛谷P1115 最大子段和動態規劃
- 已知二叉樹的先序和後序求任意一中序二叉樹