题目描述
思路
排序
因为要使得(nums[i]-1)*(nums[j]-1)最大,就要使nums[i]和nums[j]为数组的最大值和次大值,所以可以通过排序找出两个最大的元素即可。
Python实现
class Solution:
def maxProduct(self, nums: List[int]) -> int:
nums.sort()
return (nums[-1]-1) * (nums[-2]-1)
Java实现
class Solution {
public int maxProduct(int[] nums) {
Arrays.sort(nums);
int n = nums.length;
return (nums[n-1]-1) * (nums[n-2]-1);
}
}
C++实现
class Solution {
public:
int maxProduct(vector<int>& nums) {
sort(nums.begin(), nums.end());
return (nums.back()-1) * (nums[nums.size()-2]-1);
}
};