解题思路

代码
// class Solution {// public:// int crossSum(vector<int> & nums, int left, int right, int p)// {// if(left == right) return nums[left];// int currSum = 0, leftSum = INT_MIN, rightSum = INT_MIN;// for(int i = p ; i > left-1 ; i--)// {// currSum += nums[i];// leftSum = max(currSum, leftSum);// }// currSum = 0;// for(int i = p + 1 ; i < right + 1 ; i++)// {// currSum += nums[i];// rightSum = max(currSum, rightSum);// }// return leftSum + rightSum;// }// int unitSum(vector<int> & nums, int left, int right)// {// if(left == right)// {// return nums[left];// }// int leftSum;// int rightSum;// int RcrossSum;// leftSum = unitSum(nums, left, (left+right)/2);// rightSum = unitSum(nums, (left+right)/2+1, right);// RcrossSum = crossSum(nums, left, right, (left+right)/2);// return max(leftSum, max(rightSum, RcrossSum));// }// int maxSubArray(vector<int>& nums) {// return unitSum(nums, 0, nums.size()-1);// }// };class Solution {public: int maxSubArray(vector<int>& nums) { int currMax = nums[0]; int reMax = nums[0]; for(int i = 1 ; i < nums.size() ; i++) { currMax = max(nums[i], currMax + nums[i]); reMax = max(currMax, reMax); } return reMax; }};