您的位置:首页 > 编程语言 > Java开发

(java)Maximum Subarray

2016-01-08 11:44 387 查看
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
.

思路:还是典型的贪心,设置一个maxsum和sum,循环遍历这个数组,当maxsum <sum时,maxsum=sum;

当sum<0 时,将前面的丢弃,sum=0,重新开始;

注意边界nums[i]都是小于0的,返回那个最大的数。

代码如下(已通过leetcode)

public class Solution {

public int maxSubArray(int[] nums) {

boolean flag=true;

int j=0;

int temp=-Integer.MIN_VALUE;

while(j<nums.length){

if(nums[j]>0){

flag=false;

break;

}

if(nums[j]>temp) temp=nums[j];

j++;

}

if(flag) return temp;

int sum=0;

int maxsum=0;

for(int i=0;i<nums.length;i++){

sum=sum+nums[i];

if(sum>maxsum) maxsum=sum;

if(sum<0) sum=0;

}

return maxsum;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: