题目描述
给你一个整数数组nums,请你选择数组的两个不同下标i和j,使(nums[i]-1)*(nums[j]-1)取得最大值。
请你计算并返回该式的最大值。
示例 1
输入:
nums = [3,4,5,2]
输出:12
解释:选择下标i=1和j=2(下标从 0 开始),可以获得最大值(4-1)*(5-1) = 3*4 = 12。
示例 2
输入:
nums = [1,5,4,5]
输出:16
解释:选择下标i=1和j=3,可以获得最大值(5-1)*(5-1) = 16。
示例 3
输入:
nums = [3,7]
输出:12
提示
2 <= nums.length <= 5001 <= nums[i] <= 10^3
苯人思路
classSolution{public:intmaxProduct(vector<int>&nums){sort(nums.begin(),nums.end());intn=nums.size();// 输出 最大两个数-1后的乘积 和最小两个数-1后的乘积 中较大的那个// 此处考虑了 nums 元素为负数的情况return((nums[n-1]-1)*(nums[n-2]-1)>(nums[0]-1)*(nums[1]-1))?(nums[n-1]-1)*(nums[n-2]-1):(nums[0]-1)*(nums[1]-1);}};