Description:
Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.
Example:
Input: [-2,1,-3,4,-1,2,1,-5,4],
Output: 6
Explanation: [4,-1,2,1] has the largest sum = 6.
思路:
动态规划问题
#include <iostream>
// #include <numeric>
#include <vector>
using namespace std;
class Solution {
public:
int maxSubArray(vector<int>& nums)
{
int sum = nums[0];
int maxsum = nums[0];
for (int i = 1; i < nums.size(); i++) {
sum = max(nums[i], sum + nums[i]);
maxsum = max(maxsum, sum); //
}
return maxsum;
}
};
int main()
{
vector<int> test = { -2, 1, -3, 4, -1, 2, 1, -5, 4 };
Solution s;
cout << s.maxSubArray(test);
return 0;
}