carloscn / structstudy

Leetcode daily trainning by using C/C++/RUST programming.
4 stars 1 forks source link

leetcode1800: Maximum Ascending Subarray Sum #286

Open carloscn opened 1 year ago

carloscn commented 1 year ago

Description

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.

Constraints:

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

carloscn commented 1 year ago

Analysis

pub fn max_ascending_sum(nums: Vec<i32>) -> i32
{
    if nums.len() < 1 {
        return 0;
    }

    let mut max_sum:i32 = i32::MIN;
    let mut sum:i32 = 0;

    for i in 0..nums.len() {
        if (i < nums.len() - 1) && (nums[i + 1] - nums[i] > 0) {
            sum += nums[i];
        } else {
            sum += nums[i];
            max_sum = max_sum.max(sum);
            sum = 0;
        }
    }

    return max_sum;
}
carloscn commented 1 year ago

code

https://github.com/carloscn/structstudy/commit/b9d7504285c2febe506cf0d49513449e53dd73f7 https://review.gerrithub.io/c/carloscn/structstudy/+/556956