三个数的最大乘积
题目介绍
❤️ 简单
给你一个整型数组 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
思路分析
题目要求
求出由三个数组成的最大乘积
分析:
1.只有3个数,直接输出3个数的乘积
2.个数>3
情况一:
全部是正数 或者 全部是负数
解答:最大的3个数相乘 或者 最小的3个数相乘
情况二:
既有正数又有负数
①考虑负数的个数,若负数=1,最大的3个数相乘
②若负数>=2,考虑最大的2个负数相乘再乘以最大的正数,与最大的3个正数相乘的乘积比较谁大
据分析,对于2均需要一定的序列,所以可以先排序
代码
class Solution {
public:
int maximumProduct(vector<int>& nums) {
int n = nums.size();
if(n == 3){
return nums[0]*nums[1]*nums[2];
}else if(n > 3){
sort(nums.begin(),nums.end());
return max(nums[n-1]*nums[n-2]*nums[n-3],nums[0]*nums[1]*nums[n-1]);
}
return -1;
}
};