题解 | #连续子数组的最大和#
连续子数组的最大和
http://www.nowcoder.com/practice/459bd355da1549fa8a49e350bf3df484
import java.util.*;
public class Solution {
// 动态规划 时间O(N)空间O(N)
public int FindGreatestSumOfSubArray(int[] array) {
if(array.length<2) return array[0];
/*int[] dp = new int[array.length+1];
int res = Integer.MIN_VALUE;
dp[0] = 0;
for(int i=1;i < dp.length;i++){
dp[i] = Math.max(array[i-1],dp[i-1]+array[i-1]);
res = Math.max(dp[i],res);
}
return res;*/
/***** 时间O(N)空间O(1)****/
int tmp = 0;
int res = Integer.MIN_VALUE;
int arr_max = array[0];
for(int i=0;i<array.length;i++){
if(arr_max < array[i]){
arr_max = array[i];
}
if((tmp + array[i])<0){
tmp = 0;
}else{
tmp = tmp + array[i];
}
res = Math.max(res,tmp);
}
return tmp==0 ? arr_max : res;
/***** 时间O(N)空间O(1)****/
}
}