#2909
Medium Algorithms Minimum sum of mountain triplets ii
Array
54.5% acceptance
Feb 25, 2026
248
11
You are given a 0-indexed array nums of integers.
A triplet of indices (i, j, k) is a mountain if:
i < j < k
nums[i] < nums[j] and nums[k] < nums[j]
Return the minimum possible sum of a mountain triplet of nums. If no such triplet exists, return -1.
Solution
Rust
Time O(n)
Space O(n)
impl Solution {
pub fn minimum_sum(nums: Vec<i32>) -> i32 {
let n = nums.len();
// prefix_min[i] = min of nums[0..=i]
let mut prefix_min = vec![i32::MAX; n];
prefix_min[0] = nums[0];
for i in 1..n {
prefix_min[i] = prefix_min[i - 1].min(nums[i]);
}
// suffix_min[i] = min of nums[i..n]
let mut suffix_min = vec![i32::MAX; n];
suffix_min[n - 1] = nums[n - 1];
for i in (0..n - 1).rev() {
suffix_min[i] = suffix_min[i + 1].min(nums[i]);
}
let mut ans = i32::MAX;
for j in 1..n - 1 {
let left_min = prefix_min[j - 1];
let right_min = suffix_min[j + 1];
if left_min < nums[j] && right_min < nums[j] {
ans = ans.min(left_min + nums[j] + right_min);
}
}
if ans == i32::MAX { -1 } else { ans }
}
}