public class Solution {
public int FindGreatestSumOfSubArray (int [] array) {
if (array.length == 0 ) {
return 0 ;
}
int maxSum = Integer.MIN_VALUE;
for (int i = 0 ; i < array.length; i++) {
for (int j = 0 ; j < array.length; j++) {
int sum = array[i];
for (int k = i+1 ; k <= j; k++) {
sum += array[k];
}
if (sum > maxSum) {
maxSum = sum;
}
}
}
return maxSum;
}
public static void main (String[] args) {
int [] array = {-2 ,-8 ,-1 ,-5 ,-9 };
System.out .println(new Solution().FindGreatestSumOfSubArray(array));
}
}
public class Solution {
public int FindGreatestSumOfSubArray (int [] array) {
if (array.length == 0 || array == null ) {
return 0 ;
}
int maxSum = Integer.MIN_VALUE, curSum = 0 ;
for (int i = 0 ; i < array.length; i++) {
if (curSum <= 0 ) {
curSum = array[i];
} else {
curSum += array[i];
}
if (curSum > maxSum) {
maxSum = curSum;
}
}
return maxSum;
}
public static void main (String[] args) {
int [] array = {-2 ,-8 ,-1 ,-5 ,-9 };
System.out .println(new Solution().FindGreatestSumOfSubArray(array));
}
}
public class Solution {
public int FindGreatestSumOfSubArray(int [] array ) {
if (array .length == 0 || array == null) {
return 0 ;
}
int maxSum = Integer.MIN_VALUE, curSum = 0 ;
int [] dp = new int [array .length];
dp[0 ] = array [0 ];
for (int i = 1 ; i < array .length; i++) {
if (dp[i-1 ] <= 0 ) {
dp[i] = array [i];
} else {
dp[i] = dp[i-1 ] + array [i];
}
if (dp[i] > maxSum) {
maxSum = dp[i];
}
}
return maxSum;
}
public static void main(String[] args) {
int [] array = {6 ,-3 ,-2 ,7 ,-15 ,1 ,2 ,2 };
System.out.println(new Solution().FindGreatestSumOfSubArray(array ));
}
}