LeetCode 1800. 最大升序子数组和
Posted 数据结构和算法
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 1800. 最大升序子数组和相关的知识,希望对你有一定的参考价值。
截止到目前我已经写了 600多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载
下载链接:https://pan.baidu.com/s/1hjwK0ZeRxYGB8lIkbKuQgQ
提取码:6666
这题可以参照《486,动态规划解最大子序和》使用动态规划来解决,但实际上不需要dp
数组也可以解决。这题让求的是升序子数组的最大和,解题思路如下
- 使用一个变量sum记录子数组的和
- 当递增的时候,sum就累加
- 当递减的时候,把当前元素的值赋值给sum,也就是重新开始统计
- 使用一个变量max记录遍历过的升序子数组的最大和
如下图所示
原理比较简单,来看下代码
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)
以上是关于LeetCode 1800. 最大升序子数组和的主要内容,如果未能解决你的问题,请参考以下文章