【leetcode】628. 三个数的最大乘积(maximum-product-of-three-numbers)(数学)[简单]

链接

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]);
    }
};
上一篇:Generative Adversarial Network(2)


下一篇:Entity Framework(EF的Model First方法)