给你一个整型数组 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
- 思路
将nums排序 如果全为正数或全为负数,
最大三个数的乘积为a 如果存在两个以上负数,
两个最小负数与最大正数的乘积b
三数乘积的最大值肯定为:max(a,b)
- 复杂度分析
sort底层为Timsort
时间复杂度:O(NlogN)
空间复杂度:O(N)
- 代码
class Solution:
def maximumProduct1(self, nums: List[int]) -> int:
nums.sort()
a = nums[-1] * nums[-2] * nums[-3]
b = nums[0] * nums[1] * nums[-1]
return max(a, b)