题目描述
给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
示例 1:
输入: [1,2,3]
输出: 6
示例 2:
输入: [1,2,3,4]
输出: 24
注意:
给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。
输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。
解题思路
遍历一遍,找出最大的三个数和最小的两个数
代码实现
class Solution {
public:
int maximumProduct(vector<int>& nums) {
std::ios::sync_with_stdio(false);
std::cin.tie(NULL);
std::cout.tie(NULL);
int min_first=INT_MAX;
int min_second=INT_MAX;
int max_first=INT_MIN;
int max_second=INT_MIN;
int max_third=INT_MIN;
for(int num:nums){
if(num>max_first){
max_third=max_second;
max_second=max_first;
max_first=num;
}else if(num>max_second){
max_third=max_second;
max_second=num;
}else if(num>max_third){
max_third=num;
}
if(num<min_first){
min_second=min_first;
min_first=num;
}else if(num<min_second){
min_second=num;
}
}
return max(min_first*min_second*max_first,max_first*max_second*max_third);
}
};
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-product-of-three-numbers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。