Maximum Subarray

题目描述

Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For example, given the array [−2,1,−3,4,−1,2,1,−5,4],
the contiguous subarray [4,−1,2,1] has the largest sum = 6.


思路(1)

从首元素开始,依次计算和后面值的和,并取最大值;直到进行到最后一个元素。但是这种方法超时,时间复杂度为O(n),需要寻找更加有效的方法。

思路(1)代码

package leetcode;

public class MaximumSubarray {
	public int maxSubArray(int[] A) {
		int length = A.length;
		int sum = A[0];
		for(int i = 0; i < length; i++){
			int temp = A[i];
			if(temp > sum) sum = temp;
			for(int j = i + 1; j < length; j++){
				temp += A[j];
				if(temp > sum) sum = temp;
			}
		}
        return sum;
    }
}

你可能感兴趣的:(array)