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.
从数组中找到连续几个,看和的最大值是多少?
public int maxSubArray(int[] nums) {
// 用sum存储到第i位前可能出现的最大值,如果第i位前面的可能出现的最大值是负数,就丢弃前面的累赘。
int sum=nums[0];
int max=nums[0];
for(int i=1;i<nums.length;i++){
sum = sum>0?(sum+nums[i]):nums[i];
max =sum>max?sum:max;
}
return max;
}
本文介绍了一种寻找数组中具有最大和的连续子数组的方法。通过动态规划思想,该算法能在O(n)的时间复杂度内解决此问题。举例说明了如何从给定数组中找出最大子数组和。
313

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



