您的位置:首页 > 其它

leetcode 53. Maximum Subarray

2016-09-19 15:51 429 查看
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.

首先,不难分析出目标子串的左右两边都一定是负数 且边界值为正数

也就是

. . . 负 正 . . . 正 负 . . .


不过这个分析也没什么用。。。

-2 4 3 5 -6 7 3 1 0 -3

dp[i]表示:包含第i 个元素 且以第i个元素为最后一个元素的子串 的最大长度



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