今日学习记录
1. 3584. 子序列首尾元素的最大乘积
关键词:枚举
核心思路
前缀和处理后找最大值和最小值
学习到的就是说,不能直接去找最大和最小,这个最小要在最大的前面,所以我们在枚举最大值的时候同时找到枚举之前的最小值就行了
tip
long long maximumProduct(vector<int>& nums, int m) {
int premx = -INT_MAX/2,premn = INT_MAX/2;
long long ans = LONG_MIN;
int n =nums.size();
for(int i = 0;i<n;i++){
int k = i-m+1;
if(k>=0){
premn = min(premn,nums[k]);
premx = max(premx,nums[k]);
ans = max(1LL*premn*nums[i],ans);
ans = max(1LL*premx*nums[i],ans);
}
}
return ans;
}学到的点:
- 枚举技巧