题目来源:牛客网 连续最大子数组
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