题目
输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n).
知识点
数组,分治,动态规划
思路
基础的动态规划:
连续子数组的最大和是当前元素和之前连续子数组的和加在一起形成的。
代码
public class Solution {
public int FindGreatestSumOfSubArray(int[] array) {
if(array.length==0) return 0;
int n = array[0];
for(int i=1;i<array.length;i++){
if(array[i-1]>0){
array[i]+=array[i-1];
}
if(n<array[i]) n=array[i];
} return n;
}
}