最大升序子数组和
发布日期:2021-05-08 00:00:38 浏览次数:20 分类:精选文章

本文共 811 字,大约阅读时间需要 2 分钟。

原题指路

题目描述

给你一个正整数组成的数组 nums ,返回 nums 中一个 升序 子数组的最大可能元素和。

子数组是数组中的一个连续数字序列。

已知子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,若对所有 il <= i < r),numsi < numsi+1 都成立,则称这一子数组为 升序 子数组。注意,大小为 1 的子数组也视作 升序 子数组。

解题思路

图片1.png

这道题用动态规划即可解决问题,在每次递增子数组结束时,用状态转移方程更新一下即可。

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

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

代码

class Solution {       public:        int maxAscendingSum(vector
& nums) { int sum = nums[0], temp = nums[0]; for(int i = 1; i < nums.size(); i++) if(nums[i] > nums[i - 1]) temp += nums[i]; else { if(temp > sum) sum = temp; temp = nums[i]; } if(temp > sum) sum = temp; return sum; }};
上一篇:设计一个验证系统
下一篇:仅执行一次字符串交换能否使两个字符串相等

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月16日 10时44分08秒