计算连续子向量的最大和,向量中包含负数。例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1)
连续累加,小于0了则归零。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| class Solution { public: int FindGreatestSumOfSubArray(vector<int> array) { int sum = 0; int max_sum = INT_MIN; for (const int number : array) { if (sum < 0) { sum = 0; } sum += number; if (sum > max_sum) { max_sum = sum; } } if (max_sum == INT_MAX) { max_sum = 0; } return max_sum; } };
|