动态规划求解连续子数组的最大和
程序员文章站
2024-03-17 23:45:34
...
给定一个整数数组,数组里有正有负。数组中的一个活连续多个元素组成一个子数组。求所有子数组的和的最大值。
一、枚举所有可能——最基础的解法
最直观的解法就是,计算出所有可能组合的子数组的和,返回最大的和。这种解法的复杂度最低也要。
import java.util.ArrayList;
import java.util.Collections;
public class Solution {
public int FindGreatestSumOfSubArray(int[] array)
{
ArrayList<Integer> list = new ArrayList<Integer>();
int len = array.length;
for(int i = 0;i<len;i++) {
int sum = 0;
for(int j = i;j<len;j++)
{
sum += array[j];
list.add(sum);
}
}
return Collections.max(list);
}
}
二、动态规划法
假设表示以第个数字结尾的子数组的最大和,即为我们所要求的最大和。那么,
public class Solution
{
public int FindGreatestSumOfSubArray(int[] array) {
int result = array[0];
int max=array[0];
for (int i = 1; i < array.length; i++) {
max=Math.max(max+array[i], array[i]);
result=Math.max(max, result);
}
return result;
}
}
上一篇: STL之queue容器使用大全
下一篇: 动态规划求连续子数组的最大和