转自几个面试经典算法题Java解答(http://www.cnblogs.com/sunniest/p/4596182.html)题目五
//求数组中一个或连续多个元素组成子数组中,和最大的子数组。时间复杂度O(n)
public class SubArraySumMax {
public int findSubMax(int[] array){
int curSum = 0;
int maxSum = -999999999;
int start = 0;
int end = 0;
for(int i = 0 ; i < array.length ; i++){
if(curSum <= 0){
curSum = array[i];
start = i;
}else{
curSum += array[i];
}
if(curSum > maxSum){
maxSum = curSum;
end = i;
}
}
for(int i = start ; i <= end ; i++){
System.out.print(array[i] + " ");
}
System.out.println();
return maxSum;
}
public static void main(String[] args) {
SubArraySumMax sa = new SubArraySumMax();
int[] array = {-2 , 3 , 1};
System.out.println(sa.findSubMax(array));
}
}
本文介绍了一个用于寻找数组中和最大的子数组的算法实现。该算法采用动态规划思想,时间复杂度为O(n),适用于面试及实际应用。通过具体实例演示了如何找到具有最大和的子数组,并给出了完整的Java代码实现。
348

被折叠的 条评论
为什么被折叠?



