状态表示
当前位置为i,last表示[0, i-1]的最大子序和
now表示[0, i]的最大子序和,如果想让当前的now更大,那么last需要>=0
状态计算
now = max(0, last) + nums[i]
状态计算
class Solution { public: int maxSubArray(vector<int>& nums) { int last = 0; int ans = INT_MIN; int n = nums.size(); for (int i = 0; i < n; i++) { int now = max(last, 0) + nums[i]; ans = max(ans, now); last = now; } return ans; } };