时间复杂度为o(n)
只需要过一遍数组即可,但是需要深入理解这个数组的本质特征,即动态规划的方法。
首先设置两个变量,thissum和maxsum。其中thissum表示走到当前位置元素的和;maxsum表示走到当前位置下的连续子序列的最大和。
注意:如果thissum为负,则直接将其置为0;如果thissum大于maxsum,则将maxsum置为thissum的值。
public static int maxsubarray(int[] nums) { int length = nums.length; if(length <= 0) return 0; int cursum = 0; int max = integer.min_value; for(int i = 0; i < length; i++) { if(cursum <= 0) //当当前的和小于等于0,那么就给其置为当前元素的值 cursum = nums[i]; else cursum += nums[i]; if(cursum > max) max = cursum; } return max; }
推荐教程:php教程
以上就是给定一个数组,求数组中最大连续子序列的和的详细内容。