题目名称

给你一个整数数组 nums,请你选择数组的两个不同下标 i 和 j,使 (nums[i]-1)*(nums[j]-1) 取得最大值。

请你计算并返回该式的最大值。

示例

输入:nums = [3,4,5,2]

输出:12

解释:如果选择下标 i=1 和 j=2(下标从 0 开始),则可以获得最大值,(nums[1]-1)(nums[2]-1) = (4-1)(5-1) = 3*4 = 12

题解

滑动窗口

只需要对数组排序,然后取最大的两个值,进行求积操作

答案

1
2
3
4
5
6
7
8
/**
* @param {number[]} nums
* @return {number}
*/
var maxProduct = function(nums) {
nums = nums.sort((a, b) => a - b)
return (nums.pop() - 1) * (nums.pop() - 1)
};