如果sum小于0,证明再往后面加就越来越小,此时应该重新计算和,并且与之前的相比较,看哪个大。
执行用时 : 14 ms, 在Maximum Subarray的Java提交中击败了74.80% 的用户
内存消耗 : 43.6 MB, 在Maximum Subarray的Java提交中击败了1.20% 的用户
class Solution {
public int maxSubArray(int[] nums) {
int sum = 0 , ans = java.lang.Integer.MIN_VALUE;
for( int num : nums ){
sum += num;
ans = Math.max( ans , sum ) ;
if( sum < 0 ){
sum = 0;
}
}
return ans;
}
}