LeetCode[递归]53. Maximum Subarray 数组最大和

来源:互联网 发布:软件开发项目规划 编辑:程序博客网 时间:2024/06/08 19:59

题目链接

https://leetcode.com/problems/maximum-subarray/#/description

Find the contiguous subarray within an array (containing at least one number) which has the largest sum.

For example, given the array [-2,1,-3,4,-1,2,1,-5,4],
the contiguous subarray [4,-1,2,1] has the largest sum = 6.

代码

class Solution {public:    int max(int a,int b){return a > b?a:b;}    int maxSubArray(vector<int>& nums) {        if(nums.empty()) return 0;return maxsub(nums,0,(int)nums.size() - 1);    }int maxsub(vector<int>&nums,int left,int right){if(left >= right) return nums[left];int mid = left +(right - left)/2;//这里很重要int lmax = maxsub(nums,left,mid-1);int rmax = maxsub(nums,mid+1,right);int mmax = nums[mid],t = mmax;              int i;for(i = mid - 1;i >= left;i--){t += nums[i];mmax = max(mmax,t);}t = mmax;for(i = mid+1;i <=right;i++){t += nums[i];mmax = max(mmax,t);}return max(mmax,max(lmax,rmax));}};


阅读全文
0 0
原创粉丝点击