找出总和最大的连续数列,并返回总和
代码如有雷同,纯属意外
今天看过韩顺平老师的数据结构课程的动态规划之后,突然想起之前在Leecode上做这个题目的时候,题解上有动态规划的解法,但是当时没有怎么弄明白。今天看老师使用填表的方式解决背包问题,就想着也使用填表的方式来找出这个问题的规律,进而推导出公式,完成代码。
int[] nums = {-2,1,-3,4,-1,2,1,-5,4};以这个数组为例
public class MaxSubArr {
public static void main(String[] args) {
int[] nums = {
-2,1,-3,4,-1,2,1,-5,4};
int max = getMax(nums);
System.out.println(max);
}
public static int getMax(int[] arr){
int sum = 0;
int num = Integer.MIN_VALUE;
for (int i : arr) {
sum += i;
num = Math.max(sum,num);
if (sum < 0){
sum = 0;
}
}
return num;
}
}