Description
You are given an integer array nums
and an integer m
.
Return the maximum product of the first and last elements of any subsequence of nums
of size m
.
Β
Example 1:
Input: nums = [-1,-9,2,3,-2,-3,1], m = 1
Output: 81
Explanation:
The subsequence [-9]
has the largest product of the first and last elements: -9 * -9 = 81
. Therefore, the answer is 81.
Example 2:
Input: nums = [1,3,-5,5,6,-4], m = 3
Output: 20
Explanation:
The subsequence [-5, 6, -4]
has the largest product of the first and last elements.
Example 3:
Input: nums = [2,-1,2,-6,5,2,-5,7], m = 2
Output: 35
Explanation:
The subsequence [5, 7]
has the largest product of the first and last elements.
Β
Constraints:
1 <= nums.length <= 105
-105 <= nums[i] <= 105
1 <= m <= nums.length
Solution
Python3
class Solution:
def maximumProduct(self, nums: List[int], m: int) -> int:
N = len(nums)
maxVal, minVal = -inf, inf
res = -inf
for i, x in enumerate(nums):
if i >= m - 1:
maxVal = max(maxVal, nums[i - m + 1])
minVal = min(minVal, nums[i - m + 1])
res = max(res, x * maxVal, x * minVal)
return res