连续子数组的最大和

题目来源:牛客网     连续最大子数组

 1 class Solution {
 2 public:
 3     int FindGreatestSumOfSubArray(vector<int> array) {
 4         if (array.empty()) return 0;
 5         //一个是max找最大的
 6         //一个是pos记录位置的//其实这个题也不需要
 7         //sum记录和,如果加完以后比没加之前数字还小,就更新pos和sum
 8         int max,sum;
 9         max = array[0];
10         sum = array[0];
11         for (int i = 1; i < array.size(); i++) {
12             if (sum + array[i] < array[i]) sum = array[i];
13             else sum = sum + array[i];
14             if (sum > max) max = sum;
15         }
16         return max;
17     }
18 };

如果要定位到是哪一串加起来得到的max,就用pos记录更新sum的时候的位置

愉悦时间:思路大致可以概括为,先找到最大的,有更大的时候就更新。

sum如果是负的的时候,接下来怎么加都不可能比后面的自己加还要大 //12行的意思

锵锵,但是如果sum大于0,那就证明它还有成长空间23333

原文地址:https://www.cnblogs.com/yoriko/p/12243047.html