题目:
题解:
- 分情况,找规律
- 首先对数组进行排序,然后找到规律返回即可。
- 1)若数组内的数字全为负数,那么最后结果肯定为负数。而最大值就是最后面两个负数相乘获得绝对值的最大值,然后再乘以一个绝对值较小的负数即可,那就是最前面那个负数。
- 2)若数组内的数字全为正数,那么最后结果肯定为正数,而且就是最大三个正数的积。
- 3)若数组内的数字既有负数又有正数还有0的话,那么返回前面那两种情况中的较大值即可。
代码如下:
class Solution {
public:
int maximumProduct(vector<int>& nums) {
sort(nums.begin(),nums.end());
int n=nums.size();
//无论有多少正数或者负数,首先一定会选择最大数即nums[n-1],然后无非就是选择开头两位还是倒数两位
return max(nums[0]*nums[1]*nums[n-1],nums[n-3]*nums[n-2]*nums[n-1]);
}
};