Skip to content

Files

Latest commit

Mar 21, 2021
ecc68e1 · Mar 21, 2021

History

History
This branch is 2352 commits behind lzl124631x/LeetCode:master.

1800. Maximum Ascending Subarray Sum

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Mar 21, 2021

Given an array of positive integers nums, return the maximum possible sum of an ascending subarray in nums.

A subarray is defined as a contiguous sequence of numbers in an array.

A subarray [numsl, numsl+1, ..., numsr-1, numsr] is ascending if for all i where l <= i < r, numsi < numsi+1. Note that a subarray of size 1 is ascending.

 

Example 1:

Input: nums = [10,20,30,5,10,50]
Output: 65
Explanation: [5,10,50] is the ascending subarray with the maximum sum of 65.

Example 2:

Input: nums = [10,20,30,40,50]
Output: 150
Explanation: [10,20,30,40,50] is the ascending subarray with the maximum sum of 150.

Example 3:

Input: nums = [12,17,15,13,10,11,12]
Output: 33
Explanation: [10,11,12] is the ascending subarray with the maximum sum of 33.

Example 4:

Input: nums = [100,10,1]
Output: 100

 

Constraints:

  • 1 <= nums.length <= 100
  • 1 <= nums[i] <= 100

Related Topics:
Two Pointers

Solution 1.

// OJ: https://leetcode.com/problems/maximum-ascending-subarray-sum/
// Author: github.com/lzl124631x
// Time: O(N)
// Space: O(1)
class Solution {
public:
    int maxAscendingSum(vector<int>& A) {
        int ans = A[0], sum = A[0];
        for (int i = 1; i < A.size(); ++i) {
            if (A[i] > A[i - 1]) {
                sum += A[i];
            } else {
                sum = A[i];
            }
            ans = max(ans, sum);
        }
        return ans;
    }
};