题目大意:给出一个整数数组,求出其中三个数相乘的最大乘积是多少
分析:数学考察。分析最大乘积只有两种情况:要么是最大的三个数相乘(全是正数、全是负数、只有一个负数、只有一个正数)
要么是最小的两个负数相乘再乘以最大的一个正数
代码:
class Solution {
public:
int maximumProduct(vector<int>& nums) {
sort(nums.begin(),nums.end());
int a = nums[0] * nums[1] * nums[nums.size() - 1];
int b = nums[nums.size() - 3] * nums[nums.size() - 2] * nums[nums.size() - 1];
return max(a,b);
}
};