参考Ch_02最大子序列问题
题目:
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
.
class Solution {
public int maxSubArray(int[] nums) {
//该题使用聪明算法实现,不同的是,该题目并未要求返回值最小为0,所以maxSum不能初始化为0
//使用0x7fffffff表示最大值Inter的32位
int maxSum=-0x7fffffff;
int thisSum=0;
for(int i=0;i<nums.length;i++){
thisSum+=nums[i];
if(thisSum>maxSum){
maxSum=thisSum;
}
//如果thisSum<0说明之前和为负数,重新置0
if(thisSum<0){//因为并未要求最小值为0,所以不能使用else if(thisSum<0)
thisSum=0;
}
}
return maxSum;
}
}