题目链接:Leetcode53

Code:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
if (nums.size() == 0) return 0;
return dfs(nums, 0, nums.size()-1);
}
int dfs(vector<int>& num, int l, int r) {
if (l == r) return num[l];
return max(dfs(num, l, l+(r-l>>1)), max(dfs(num, l+(r-l>>1)+1, r), f(num, l, r)));
}
int f(vector<int>& num, int l, int r) {
int m = l+(r-l>>1);
int ls, rs;
ls = rs = 1<<31;
int s = 0;
for(int i=m; i>=l; i--) {
s += num[i];
ls=max(s, ls);
}
s = 0;
for (int i=m+1; i<=r; i++) {
s += num[i];
rs=max(s, rs);
}
return rs+ls;
}
};
437

被折叠的 条评论
为什么被折叠?



