class Solution {
public:
int maxSubArray(vector<int>& nums) {
int res = INT_MIN, sum = 0;
// accumulate only if the final sum is greater than self
for (auto & n : nums) {
sum = max(n + sum, n);
res = max(res, sum);
}
return res;
}
};
prefix sum
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int mins = 0, sum = 0, res = INT_MIN;
for (auto n : nums) {
sum += n;
res = max(res, sum - mins);
mins = min(mins, sum);
}
return res;
}
};