O(n) solution
public class MaxSubArray {
public int maxSubArray(int[] A) {
int sum = 0, curr = 0;
int max = Integer.MIN_VALUE;
for(curr = 0; curr < A.length; curr++) {
sum += A[curr];
if(sum > max) max = sum;
if(sum < 0) sum = 0;
}
return max;
}
/**
* @param args
*/
public static void main(String[] args) {
//
//int[] A = {-2,1,-3,4,-1,2,1,-5,4};
int[] A = {1};
MaxSubArray msa = new MaxSubArray();
System.out.println(msa.maxSubArray(A));
}
}
Divide & Conquer