Medium
Maximum Product of First and Last Elements of a Subsequence — C++
Full explanation · Time O(n) · Space O(1)
// Time: O(n)
// Space: O(1)
// two pointers, sliding window
class Solution {
public:
long long maximumProduct(vector<int>& nums, int m) {
int64_t result = numeric_limits<int64_t>::min();
int mx = numeric_limits<int>::min();
int mn = numeric_limits<int>::max();
for (int i = 0; i + (m - 1) < size(nums); ++i) {
mx = max(mx, nums[i]);
mn = min(mn, nums[i]);
result = max({result, static_cast<int64_t>(nums[i + (m - 1)]) * mx, static_cast<int64_t>(nums[i + (m - 1)]) * mn});
}
return result;
}
};