leetcode 628题

Posted by franki on November 17, 2022

leetcode 628 三个数的最大乘积

给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。

示例1

输入:nums = [1,2,3]
输出:6

示例2

输入:nums = [1,2,3,4]
输出:24

示例3

输入:nums = [-1,-2,-3]
输出:-6

思路

排序,判断最后三个数的乘积和头两个数与最后一个数乘积,两者比大小,谁大取谁

代码

/**
 * @param {number[]} nums
 * @return {number}
 */
function maximumProduct(nums) {
    if (nums.length === 0) {
        return 0;
    }
    let res = 1;
    if (nums.length < 3) {
        for (const num of nums) {
            res *= num;
        }

        return res;
    }
    nums.sort((a, b) => a - b);
    return Math.max(nums[0] * nums[1] * nums[nums.length - 1], nums[nums.length - 1] * nums[nums.length - 2] * nums[nums.length - 3]);
}

复杂度分析:

  • 时间复杂度: O(NlogN)
  • 空间复杂度:O(1)