zoukankan      html  css  js  c++  java
  • 【LeetCode-数组】三个数的最大乘积

    题目描述

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

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

    说明:

    • 给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。
    • 输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。

    题目链接: https://leetcode-cn.com/problems/maximum-product-of-three-numbers/

    思路

    将数组从小到大排序,假如数组都为正数,则最后 3 个数的乘积就是最大乘积,因为数组中可能有负数,所以前 2 个数和最后一个数的乘积也有可能是最大的,返回两个乘积的最大值。代码如下:

    class Solution {
    public:
        int maximumProduct(vector<int>& nums) {
            if(nums.empty()) return 0;
    
            int n = nums.size();
            sort(nums.begin(), nums.end());
            return max(nums[n-1]*nums[n-2]*nums[n-3], nums[0]*nums[1]*nums[n-1]);
        }
    };
    
    • 时间复杂度:O(nlogn)
    • 空间复杂度:O(1)
  • 相关阅读:
    HashMap 链表插入方式 → 头插为何改成尾插 ?
    MySQL 日志之 binlog 格式 → 关于 MySQL 默认隔离级别的探讨
    Eclipse
    Delphi
    Delphi
    Delphi
    Delphi
    Delphi
    Delphi
    Delphi
  • 原文地址:https://www.cnblogs.com/flix/p/13538240.html
Copyright © 2011-2022 走看看