百科知识

如何解释两个负数相乘得正

如何解释两个负数相乘得正

题目:给定一个整数数组nums,找出由三个数构成的最大乘积并返回。

示例:

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

输出:24

思路梳理:

1. 如果数组中的所有数都是正数,那么最大的三个正数的乘积即为所求。

2. 如果数组中的所有数都是负数,那么最大的三个负数的乘积也是答案。

3. 如果数组中有正有负,那么最大乘积可能是由最大的正数和最小的两个负数组成,或者是三个最大的正数组成。

我们需要找到数组中的最大三个数和最小两个数。

解决方案:

定义一个类Solution,其中包含了一个名为maximumProduct的公共函数,该函数接受一个整数向量nums作为输入,并返回最大乘积。

在函数中,我们首先初始化两个数组large和small,用于存储最大的三个数和最小的两个数。初始时,将large数组的初始值设为长整型最小值(LONG_MIN),small数组的初始值设为长整型最大值(LONG_MAX)。

接下来,我们遍历输入的数组nums。对于每个元素val,我们进行如下操作:

如果val大于large数组的第一个元素,则将其与large数组的现有元素进行替换。保证large数组始终包含最大的三个数。

如果val小于small数组的第一个元素,则将其与small数组的现有元素进行替换。保证small数组始终包含最小的两个数。

我们比较两种情况下的乘积并返回较大的值作为结果。一种是最大正数的乘积(large[0]large[1]large[2]),另一种是最大正数与最小两个数的乘积(small[0]small[1]large[0])。这两种情况的乘积中的最大值即为所求的最大乘积。


如何解释两个负数相乘得正

你可能也会喜欢...