Untitled
unknown
plain_text
9 months ago
987 B
6
Indexable
class Solution {
public int maximumTripletValue(int[] nums) {
int n = nums.length;
if (n < 3) return 0; // Edge case (though constraints guarantee n ≥ 3)
// Step 1: Compute suffixMax array (maximum nums[k] for k > j)
int[] suffixMax = new int[n];
suffixMax[n - 1] = nums[n - 1];
for (int k = n - 2; k >= 0; k--) {
suffixMax[k] = Math.max(suffixMax[k + 1], nums[k]);
}
// Step 2: Iterate over j, maintaining maxLeft dynamically
int maxLeft = nums[0]; // max(nums[i]) for i < j
int maxVal = 0;
for (int j = 1; j < n - 1; j++) {
// Compute the potential max value with the current j
int value = (maxLeft - nums[j]) * suffixMax[j + 1];
maxVal = Math.max(maxVal, value);
// Update maxLeft for the next iteration
maxLeft = Math.max(maxLeft, nums[j]);
}
return maxVal;
}
}
Editor is loading...
Leave a Comment