力扣628三个数的最大乘积

题目描述

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

示例1

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

示例 2:

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

示例 3:

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

提示:

3 <= nums.length <= 104
-1000 <= nums[i] <= 1000

笔者感悟

本题具有一定的数学思维和方法运用

数学思维

在这样一个整数数组其中三个数的最大计算乘积怎样计算,它是本题的核心。

由题分析可知存在两种不同情况获得相应答案

1、 数字全部为正数或者负数,取最大三个整数的乘积即可

2、 负数和正数都存在,且最小的两个负数的乘积较大,取最小两个负数的乘积再乘上最大正数

所以我们可以把两种情况下的答案都算出来,然后再比较大小

编写技巧

1.在c++中,我们可以使用sort函数将数组进行排序

2.再用max函数判断,或其他方式判断情况

笔者解法

1
2
3
4
5
6
7
8
9
class Solution {
public:
int maximumProduct(vector<int>& nums) {
sort(nums.begin(),nums.end());//数组从小到大排序
return max(nums[nums.size()-1]*nums[nums.size()-2]*nums[nums.size()-3],
nums[0]*nums[1]*nums[nums.size()-1]//max函数使用
);
}
};

读者须知

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-product-of-three-numbers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处