链接
https://leetcode-cn.com/problems/maximum-product-of-three-numbers/
耗时
解题:2 h 8 min
题解:8 min
题意
给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
思路
一个简单的思想,给数组排序,全是正数自然就是最大的三个正数相乘最大;如果有负数,那就需要考虑两个负数相乘再乘上一个正数的情况,即最小的两个数相乘再乘上最大的数;两种情况相比,取其大者。
时间复杂度: O ( n l o g n ) O(nlogn) O(nlogn)
AC代码
class Solution {
public:
int maximumProduct(vector<int>& nums) {
sort(nums.begin(), nums.end());
int n = nums.size();
return max(nums[n-1]*nums[n-2]*nums[n-3], nums[0]*nums[1]*nums[n-1]);
}
};