解题思路

代码
- // 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;
-     }
- };