2873. Maximum Value of an Ordered Triplet I - Easy

前往題目

想法

  • 三個循環,難怪是Easy,但八成不是最優解

思路

  1. 題目要求最大化(nums[i] - nums[j]) * nums[k]
  2. 可拆解為 -> nums[i] - nums[j] 以及 nums[k]最大化
  3. 於是在疊代的過程中,維護三個值分別是最大的nums[i] - nums[j]最大的nums[k],以及最重要的答案
  4. 因為都是往右走,所以不會有順序問題產生,每次的值都是之前的,不會是未來的

Code

class Solution {
    public long maximumTripletValue(int[] nums) {
        long largestVal = 0;
        long largestDiff = 0;
        long largestTripVal = 0;

        for (int num : nums) {
            largestTripVal = Math.max(largestTripVal, largestDiff * num);
            largestDiff = Math.max(largestDiff, largestVal - num);
            largestVal = Math.max(largestVal, num);
        }

        return largestTripVal;
    }
}

2873. Maximum Value of an Ordered Triplet I - Easy
https://f88083.github.io/2025/04/02/2873-Maximum-Value-of-an-Ordered-Triplet-I-Easy/
作者
Simon Lai
發布於
2025年4月2日
許可協議