DDSA
Advertisement

2874. Maximum Value of an Ordered Triplet II

Time: O(n)
Space: O(1)

Approach

Track max prefix, max (prefix - mid); answer = max(prefix - mid) * suffix.

2874.cs
C#
// Approach: Track max prefix, max (prefix - mid); answer = max(prefix - mid) * suffix.
// Time: O(n) Space: O(1)

public class Solution
{
    public long MaximumTripletValue(int[] nums)
    {
        long ans = 0;
        int maxDiff = 0; // max(nums[i] - nums[j])
        int maxNum = 0;  // max(nums[i])

        foreach (var num in nums)
        {
            ans = Math.Max(ans, (long)maxDiff * num); // num := nums[k]
            maxDiff = Math.Max(maxDiff, maxNum - num); // num := nums[j]
            maxNum = Math.Max(maxNum, num);            // num := nums[i]
        }

        return ans;
    }
}
Advertisement
Was this solution helpful?