2873. 有序三元组中的最大值 I - 力扣(LeetCode)
思路来源:滑动窗口 基环树【力扣周赛 365】_哔哩哔哩_bilibili


class Solution {
public long maximumTripletValue(int[] nums) {
int le=nums.length;
long res=0;
int[] pre_max=new int[le];
pre_max[0]=nums[0];
for(int i=1;i<le;i++){
pre_max[i]=Math.max(pre_max[i-1],nums[i]);
}
int[] pos_max=new int[le];
pos_max[le-1]=nums[le-1];
for(int i=le-2;i>=0;i--){
pos_max[i]=Math.max(pos_max[i+1],nums[i]);
}
for(int i=1;i<le-1;i++){
res=Math.max(res,(long)(pre_max[i-1]-nums[i])*pos_max[i+1]);
}
return res;
}
}
class Solution(object):
def maximumTripletValue(self, nums):
n = len(nums)
if n < 3:
return 0
# Precompute prefix maximum array
prefix_max = [0] * n
prefix_max[0] = nums[0]
for i in range(1, n):
prefix_max[i] = max(prefix_max[i-1], nums[i])
# Precompute suffix maximum array
suffix_max = [0] * n
suffix_max[-1] = nums[-1]
for i in range(n-2, -1, -1):
suffix_max[i] = max(suffix_max[i+1], nums[i])
# Compute the maximum triplet value
res = 0
for j in range(1, n-1):
current_val = (prefix_max[j-1] - nums[j]) * suffix_max[j+1]
res = max(res, current_val)
return res if res > 0 else 0
958

被折叠的 条评论
为什么被折叠?



