Skip to content

Latest commit

 

History

History

1800

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

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;
    }
};