算法题-贪心算法的一些问题集合

  1. 连续子数组的最大和

连续子数组的最大和

https://www.acwing.com/problem/content/description/50/

如果是连续的子数组, 那么对于数组中的每一个数nums[i], 都只有两个选项:

  • 要么加上nums[i]
  • 要么从nums[i]重新开始.

那么每一步直接去最大的一个就可以.

class Solution {
public:
    int maxSubArray(vector<int>& nums) {

        int n = nums.size();

        int res = nums[0];
        int ans = nums[0];

        for (int i = 1; i < n; i ++)
        {
            res = max(res + nums[i], nums[i]);
            ans = max(ans, res);
        }

        return ans;
    }
};