您的位置:首页 > 其它

LeetCode Maximum Subarray

2015-06-28 01:45 316 查看
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
.
Solution:

这道题目是很经典的题目了

求最大区间和

先判断是否都是负的,如果是取最大的

否则,进行累加。当目前累加的结果小于0的时候,重新累加。

累加过程中维护最大值。

public class Solution {
public int maxSubArray(int[] nums) {
int max = aboveZero(nums);
if (max <= 0)
return max;

int temp = 0;
for (int i = 0; i < nums.length; i++) {
if (temp + nums[i] < 0) {
temp = 0;
} else
temp += nums[i];
max = Math.max(max, temp);
}
max = Math.max(max, temp);

return max;
}

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