Problem: 53. 最大子数组和
解析
动态规划
找一个转移方程,想到以当前元素结尾的最大子数组和,要么是当前元素,要么是当前元素加上前面的最大子数组和。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| class Solution { public: int maxSubArray(vector<int>& nums) { int res=-0x3f3f3f; vector<int> maxPrefixSum(nums.size()); maxPrefixSum[0] =nums[0]; for(int i =1;i<nums.size();++i){ if(maxPrefixSum[i-1]>0){ maxPrefixSum[i] =nums[i]+maxPrefixSum[i-1]; }else{ maxPrefixSum[i]=nums[i]; } } for (int i = 0; i < nums.size(); ++i) { res=max(res,maxPrefixSum[i]); } return res; } };
|