您的位置:首页 > 产品设计 > UI/UE

Divide and Conquer -- Leetcode problem53. Maximum Subarray

2017-09-20 13:19 393 查看
描述: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.

分析:这道题看起来题目非常简单,但是仔细想想却又感觉没有什么简便的方法来进行解答,起初想法是直接用穷举法列举出所有可能,但是这样做就失去了这道题的意义,并且会超时

思路一:(动态规划)这道题Leetcode把它放在Divide and Conquer里面其实对做题者的误导蛮大的,虽然可以用分治法的思想,但是最终还是要对整个数组进行操作,分治法的用处不大,仅仅在做题的角度来说,动态规划足够解决这道题,分治法在对这道题解法优化的过程中才会使用到。

class Solution {
public:
int maxSubArray(vector<int>& nums) {
int max_num = 0;
int max_max = nums[0];
for (int i = 0; i < nums.size(); i++) {
if (max_num < 0) {
max_num = nums[i];
} else {
max_num += nums[i];
}
max_max = max(max_num, max_max);
}
return max_max;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: