2873. Maximum Value of an Ordered Triplet I - Easy
前往題目
想法
- 三個循環,難怪是Easy,但八成不是最優解
思路
- 題目要求最大化
(nums[i] - nums[j]) * nums[k]
- 可拆解為 ->
nums[i] - nums[j]
以及nums[k]
最大化 - 於是在疊代的過程中,維護三個值分別是
最大的nums[i] - nums[j]
,最大的nums[k]
,以及最重要的答案
- 因為都是往右走,所以不會有順序問題產生,每次的值都是之前的,不會是未來的
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/