Untitled

 avatar
unknown
plain_text
3 months ago
987 B
5
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