1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| class Solution { private static final int MAX = Integer.MAX_VALUE / 2;
public int minimumSum(int[] nums) { int n = nums.length; int minSum = MAX;
int[] rightMin = new int[n]; rightMin[n - 1] = nums[n - 1]; for (int i = n - 2; i >= 0; i--) { rightMin[i] = Math.min(rightMin[i + 1], nums[i]); }
int leftMin = nums[0]; for (int i = 1; i < n - 1; i++) { if (leftMin < nums[i] && nums[i] > rightMin[i + 1]) { int sum = leftMin + nums[i] + rightMin[i]; minSum = Math.min(minSum, sum); } leftMin = Math.min(leftMin, nums[i]); }
return minSum == MAX ? -1 : minSum; } }
|
References
2908. Minimum Sum of Mountain Triplets I