给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
示例 1:
输入: [1,2,3]
输出: 6
示例 2:
输入: [1,2,3,4]
输出: 24
注意:
给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。
输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。
1 class Solution { 2 public: 3 //三个数的最大乘积只可能是【前面连续的三个最大数】或者【第一个正数和最后两个负数】两种情况之一 4 int maximumProduct(vector<int>& nums) { 5 sort(nums.begin(),nums.end()); 6 int len=nums.size(); 7 int front=nums[0]*nums[1]*nums[len-1]; 8 int behind = nums[len-1]*nums[len-2]*nums[len-3]; 9 if(nums[1]<0 && front>behind) return front; 10 else return behind; 11 } 12 };