# [53. Maximum Subarray](https://leetcode.com/problems/maximum-subarray/description/) # 思路 从前往后遍历一遍,用currsum记录以当前位置为结尾的最大子序列和。可见currsum要么等于nums[i]本身,要么等于nums[i]加上上一个currsum,即更新准则为: 如果currsum大于0,那么currsum += nums[i]; 否则currsum = nums[i] # C++ ``` class Solution { public: int maxSubArray(vector& nums) { int maxsum = nums[0]; // at least one number int currsum = nums[0]; for(int i = 1; i < nums.size(); i++){ if(currsum > 0) currsum += nums[i]; else currsum = nums[i]; if(currsum > maxsum) maxsum = currsum; } return maxsum; } }; ```