解题思路:第一种 暴力遍历,将所有子数组的和都求出来 ,然后返回其中的最大值。
class Solution {
public:
int FindGreatestSumOfSubArray(vector<int> array) {
int len = array.size();
int max,j,i,num;
for (i = 0, max = array[i]; i < len; ++i)
{
for (j = i, num = 0; j < len; ++j)
{
num += array[j];
max = num>max ? num : max;
}
}
return max;
}
};
第二种思路:根据数组的特性,如果子数组的和比 当前元素还要小,那么放弃之前的子数组。
相当于对于第一种暴力遍历的改进 运行时间比之前少了 1毫秒
class Solution {
public:
int FindGreatestSumOfSubArray(vector<int> array) {
int len = array.size();
int max,j,i,num;
for (i = 0, max = array[i]; i < len; ++i)
{
for (j = i, num = 0; j < len; ++j)
{
num += array[j];
if (num < array[j]){
i=j-1;
break;
}
max = num>max ? num : max;
}
}
return max;
}
};