Maximum Ascending Subarray Sum

easy array scan

Problem

Return the maximum sum of any strictly ascending contiguous subarray of nums.

Inputnums = [10,20,30,5,10,50]
Output65
Subarray [5,10,50] sums to 65.

def max_ascending_sum(nums):
    cur = best = nums[0]
    for i in range(1, len(nums)):
        if nums[i] > nums[i-1]:
            cur += nums[i]
        else:
            cur = nums[i]
        if cur > best: best = cur
    return best
function maxAscendingSum(nums) {
  let cur = nums[0], best = nums[0];
  for (let i = 1; i < nums.length; i++) {
    cur = nums[i] > nums[i-1] ? cur + nums[i] : nums[i];
    if (cur > best) best = cur;
  }
  return best;
}
class Solution {
    public int maxAscendingSum(int[] nums) {
        int cur = nums[0], best = nums[0];
        for (int i = 1; i < nums.length; i++) {
            cur = nums[i] > nums[i-1] ? cur + nums[i] : nums[i];
            best = Math.max(best, cur);
        }
        return best;
    }
}
int maxAscendingSum(vector<int>& nums) {
    int cur = nums[0], best = nums[0];
    for (int i = 1; i < (int)nums.size(); i++) {
        cur = nums[i] > nums[i-1] ? cur + nums[i] : nums[i];
        best = max(best, cur);
    }
    return best;
}
Time: O(n) Space: O(1)