力扣地址

https://leetcode-cn.com/problems/maximum-subarray/solution/

几种解法

贪心算法

思路

初始化一个累加数,一个总数,不断进行循环;

1 判断当前与历史累加当前大小关系,如果当前更大,说明需要从此开始累计,前面累值取消;否则 取累加之后的总值。
2 判断最大值,与总数的关系,取较大值。

流程图

点击查看【processon】

代码

  1. /**
  2. * @param {number[]} nums
  3. * @return {number}
  4. */
  5. var maxSubArray = function(nums) {
  6. let maxSum = (sum = nums[0]);
  7. for (let i = 1; i < nums.length; ++i) {
  8. sum = Math.max(nums[i], sum + nums[i]);
  9. maxSum = Math.max(maxSum, sum);
  10. }
  11. return maxSum;
  12. };