问题描述:
- 给你一个正整数组成的数组
nums
,返回nums
中一个升序子数组的最大可能元素和。- 子数组是数组中的一个连续数字序列。
- 已知子数组
[nums_l, nums_{l+1}, ..., nums_{r-1}, nums_r]
,若对所有i(l <= i < r)
,numsi < numsi+1
都成立,则称这一子数组为升序子数组。- 注意,大小为
1
的子数组也视作升序子数组。
- 注意,大小为
核心思路:
- 简单模拟题,直接一次遍历获得所有升序子数组的和即可。
代码实现:
class Solution
{
public:
int maxAscendingSum(vector<int>& nums)
{
int sum = nums[0];
int cur = sum;
for(int i = 1; i < nums.size(); ++i)
{
if(nums[i] > nums[i-1]) cur += nums[i], sum = max(sum, cur);
else cur = nums[i];
}
return sum;
}
};