Maximum Subarray
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
.
解题思路:
求最大子序列算是挺经典的一道题吧。算法的思路就是:先得到当前数之前(不包含当前数)的所有子序列中的最大值(max1num),在得到包含当前数的所有子序列的最大值(max2num),再比较这两个值的最大值就可以得到这部分数组中的最大子序列的值。不断循环下去到最后就可以得到结果了。
public class Solution {
public int maxSubArray(int[] nums) {
int max1num = nums[0];
int max2num = nums[0];
for(int i = 1;i<nums.length;i++)
{
max2num = Math.max(nums[i],max2num+nums[i]);
max1num = Math.max(max2num, max1num);
}
return max1num;
}
}