简单题
基础思路:暴力的话,for循环找以数组每一个位置为起点的最大值,再做比较
动态规划:数组num,位置i之前的最大值为,位置i-1的最大值+num[i]或者num[i]自身
可能以i为开头
class Solution {
public:
int max(int a, int b) {
if (a > b) {
return a;
} else {
return b;
}
}
int maxSubArray(vector<int>& nums) {
if (nums.size() == 1) {
return nums[0];
}
else {
int size = nums.size();
int preTotal = nums[0];
int maxTotal = nums[0];
for (int i = 1; i < size; i++) {
preTotal = max(preTotal+nums[i], nums[i]);
maxTotal = max(maxTotal, preTotal);
}
return maxTotal;
}
}
};