Skip to main content
Back to problems
#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)
LeetCode
solution.rs
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 }
  }
}