classSolution { public: intFindGreatestSumOfSubArray(vector<int> array){ int res = INT_MIN; int sum = 0; for (int num : array) { sum += num; res = max(res, sum); if (sum < 0) sum = 0; } return res; } };
动态规划
1 2 3 4 5 6 7 8 9 10 11 12 13 14
classSolution { public: intFindGreatestSumOfSubArray(vector<int> array){ int n = array.size(); if (n == 0) return0; int res = 0; vector<int> dp(n, 0); // 以 array[i] 结尾的最大值 dp[0] = array[0]; for (int i = 1; i < n; ++i) { dp[i] = max(array[i], array[i]+dp[i-1]); } return *max_element(dp.begin(), dp.end()); } };