LeetCode 53 最大子数组和 - 贪心解法

LeetCode 53 最大子数组和 - 贪心解法

https://leetcode.cn/problems/maximum-subarray/description/

思路

暴力

穷举所有子数组,计算和。

  • 外层遍历 index,内层遍历 len
  • 最内层再计算 indexindex + len 的区间和。
  • 这个最内层可以继续优化掉。
class Solution {

public:

    int maxSubArray(vector<int>& nums) {

        int res=INT_MIN;  

        for(int index =0;index<nums.size();index++){

            for(int len = 0;len+index<nums.size();len++){

                int sum = 0;

                for(int j = index;j<=index+len;j++){

                    sum+=nums[j];

                }

                res = max(sum,res);

            }

        }

        return res;

     }

};

优化后:

class Solution {

public:

  int maxSubArray(vector<int> &nums) {

    int res = INT_MIN;

    for (int index = 0; index < nums.size(); index++) {

      int sum =0;

      for (int len = 0; len + index < nums.size(); len++) {

        sum+=nums[index+len];

        res = max(sum,res);

      }

    }

    return res;

  }

};