LeetCode Entry
1800. Maximum Ascending Subarray Sum
Max increasing subarray sum
1800. Maximum Ascending Subarray Sum easy
blog post
substack
youtube

Join me on Telegram
https://t.me/leetcode_daily_unstoppable/885
Problem TLDR
Max increasing subarray sum #easy
Intuition
Use brute-force, two-pointers or running sum.
Approach
- Rust has a nice chunk_by
Complexity
-
Time complexity: \(O(n)\)
-
Space complexity: \(O(1)\)
Code
fun maxAscendingSum(nums: IntArray) =
nums.indices.maxOf { i ->
var j = i + 1; while (j < nums.size && nums[j] > nums[j - 1]) j++
nums.slice(i..<j).sum()
}
pub fn max_ascending_sum(nums: Vec<i32>) -> i32 {
nums.chunk_by(|a, b| a < b).map(|c| c.iter().sum()).max().unwrap()
}
int maxAscendingSum(vector<int>& n) {
int r = n[0];
for (int i = 1, s = n[0]; i < size(n); ++i)
r = max(r, s = n[i - 1] < n[i] ? s + n[i] : n[i]);
return r;
}