class Solution { public: /** * max sum of the subarray * @param arr int整型vector the array * @return int整型 */ int maxsumofSubarray(vector<int>& arr) { // write code here int sum=0,sum1=-100000; for(int i=0;i<arr.size();i++){ if(arr[i]<0&&sum+arr[i]<=0){ sum=0; continue; } sum+=arr[i]; sum1=max(sum1, sum); } return sum1; } };
1、用累加器判断加上一位之后是否小于0
2、小于0则sum置为零从下一位开始
3、整个循环里就是取加上一位之后最大的