给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
示例 1:
输入:nums = [1,2,3]
输出:6
示例 2:
输入:nums = [1,2,3,4]
输出:24
示例 3:
输入:nums = [-1,-2,-3]
输出:-6
提示:
3 <= nums.length <= 104
-1000 <= nums[i] <= 1000
解题思路:
先对数组排序,随后遍历数组,并利用双指针计算三数之和,返回最大值即可
代码:
class Solution {
public:
int maximumProduct(vector<int>& nums) {
int n = nums.size(),k=-10000000000,l,r,sum ;
sort(nums.begin(),nums.end());
for(int i=0;i<n-1;i++){
l = i+1;
r = n-1;
while(l<r){
sum = nums[i]*nums[l]*nums[r];
if(sum > k) k = sum;
l++;
r--;
}
}
return k;
}
};