找出总和最大的连续数列

找出总和最大的连续数列,并返回总和

代码如有雷同,纯属意外
今天看过韩顺平老师的数据结构课程的动态规划之后,突然想起之前在Leecode上做这个题目的时候,题解上有动态规划的解法,但是当时没有怎么弄明白。今天看老师使用填表的方式解决背包问题,就想着也使用填表的方式来找出这个问题的规律,进而推导出公式,完成代码。
int[] nums = {-2,1,-3,4,-1,2,1,-5,4};以这个数组为例
其中sum1是当sum<0时,将sum重置为0,num是取sum和num中的最大值

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;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_45376713/article/details/108670532