Skip to content

Commit 57fd03b

Browse files
committed
add: 53. 最大子数组和,优化版
1 parent 60ed231 commit 57fd03b

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

max.js

+14-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919

2020
/**
21+
* 最低级的一版
2122
* @param {number[]} nums
2223
* @return {number}
2324
*/
@@ -43,6 +44,7 @@ var maxSubArray = function (nums) {
4344
};
4445

4546
/**
47+
* 高级版
4648
* 核心思路是将当前元素定义为连续子数组的最后一个元素。
4749
* dp[i]:表示以 nums[i] 结尾 的 连续 子数组的最大和。
4850
* dp[i] = dp[i - 1] > 0 ? dp[i - 1] + nums[i] : nums[i]
@@ -69,5 +71,16 @@ var maxSubArray2 = function (nums) {
6971
return res
7072
};
7173

72-
const result = maxSubArray2([-2, 1, -3, 4, -1, 2, 1, -5, 4]);
74+
/** 高级优化版 */
75+
var maxSubArray3 = function (nums) {
76+
let res = nums[0]
77+
let pre = 0
78+
for (const num of nums) {
79+
pre = Math.max(pre + num, num)
80+
res = Math.max(pre, res)
81+
}
82+
return res
83+
};
84+
85+
const result = maxSubArray3([-2, 1, -3, 4, -1, 2, 1, -5, 4]);
7386
console.log("result", result);

0 commit comments

Comments
 (0)