当前位置:网站首页>LeetCode:劍指 Offer 42. 連續子數組的最大和

LeetCode:劍指 Offer 42. 連續子數組的最大和

2022-07-06 08:45:00 Bertil

輸入一個整型數組,數組中的一個或連續多個整數組成一個子數組。求所有子數組的和的最大值。

要求時間複雜度為O(n)。

示例1:

輸入: nums = [-2,1,-3,4,-1,2,1,-5,4]
輸出: 6
解釋: 連續子數組 [4,-1,2,1] 的和最大,為 6

提示:

  • 1 <= arr.length <= 10^5
  • -100 <= arr[i] <= 100
    注意:本題與主站 53 題相同:https://leetcode-cn.com/problems/maximum-subarray/

解題思路

1.首先定義dp數組錶示以當前元素做結尾的最大子序列和,然後遍曆nums數組求每個dp元素值,最後返回最大值即可
2.狀態轉移方程:dp[i] = Math.max(nums[i], dp[i - 1] + nums[i])

代碼

/** * @param {number[]} nums * @return {number} */
var maxSubArray = function(nums) {
    
    let dp = [nums[0]]
    for(let i = 1; i < nums.length; i ++) {
    
        dp[i] = Math.max(nums[i], dp[i - 1] + nums[i])
    }
    return Math.max(...dp)
};
原网站

版权声明
本文为[Bertil]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060844308375.html