其他分享
首页 > 其他分享> > LeetCode 1800. 最大升序子数组和

LeetCode 1800. 最大升序子数组和

作者:互联网

截止到目前我已经写了 600多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载
下载链接https://pan.baidu.com/s/1hjwK0ZeRxYGB8lIkbKuQgQ
提取码:6666

在这里插入图片描述
在这里插入图片描述

这题可以参照《486,动态规划解最大子序和》使用动态规划来解决,但实际上不需要dp数组也可以解决。这题让求的是升序子数组的最大和,解题思路如下

如下图所示
在这里插入图片描述
原理比较简单,来看下代码

public int maxAscendingSum(int[] nums) {
    int sum = nums[0];
    int max = sum;
    for (int i = 1; i < nums.length; i++) {
        //如果是升序的,就一直累加
        if (nums[i] > nums[i - 1]) {
            sum += nums[i];
        } else {
            //如果是降序,sum就重新赋值
            sum = nums[i];
        }
        //记录最大的连续子数组的和
        max = Math.max(max, sum);
    }
    return max;
}

时间复杂度:O(n)
空间复杂度:O(1)

标签:nums,int,max,sum,1800,数组,升序,LeetCode
来源: https://blog.csdn.net/abcdef314159/article/details/120411256