力扣地址
https://leetcode-cn.com/problems/maximum-subarray/solution/
几种解法
贪心算法
思路
初始化一个累加数,一个总数,不断进行循环;
1 判断当前与历史累加当前大小关系,如果当前更大,说明需要从此开始累计,前面累值取消;否则 取累加之后的总值。
2 判断最大值,与总数的关系,取较大值。
流程图
代码
/**
* @param {number[]} nums
* @return {number}
*/
var maxSubArray = function(nums) {
let maxSum = (sum = nums[0]);
for (let i = 1; i < nums.length; ++i) {
sum = Math.max(nums[i], sum + nums[i]);
maxSum = Math.max(maxSum, sum);
}
return maxSum;
};