之前在博客搜到的算法复杂度为O(N)的最大子序和并没有考虑到都为负数的情况,因此改进为如下算法
public class MaxSubArray53 {
public static void main(String[] args) {
int[] nums = { 4, 1, -3, 4, 1, 2, 1, 1, 4 };
int sum=0;
int maxSum=-2147483647;
for(int i=0;i<nums.length;i++)
{
sum+=nums[i];
if(sum<nums[i])
sum=nums[i];
if(sum>=maxSum)
maxSum=sum;
}
System.out.println(maxSum);
}
}