Back to all solutions
#2909 - Minimum Sum of Mountain Triplets II
Problem Description
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
/**
* @param {number[]} nums
* @return {number}
*/
var minimumSum = function(nums) {
const n = nums.length;
const leftMin = new Array(n).fill(Infinity);
const rightMin = new Array(n).fill(Infinity);
leftMin[0] = nums[0];
for (let i = 1; i < n; i++) {
leftMin[i] = Math.min(leftMin[i - 1], nums[i]);
}
rightMin[n - 1] = nums[n - 1];
for (let i = n - 2; i >= 0; i--) {
rightMin[i] = Math.min(rightMin[i + 1], nums[i]);
}
let minSum = Infinity;
for (let j = 1; j < n - 1; j++) {
if (nums[j] > leftMin[j - 1] && nums[j] > rightMin[j + 1]) {
minSum = Math.min(minSum, leftMin[j - 1] + nums[j] + rightMin[j + 1]);
}
}
return minSum === Infinity ? -1 : minSum;
};