题目:
给你一个整型数组 nums
,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
示例 1:
输入:nums = [1,2,3] 输出:6
示例 2:
输入:nums = [1,2,3,4] 输出:24
示例 3:
输入:nums = [-1,-2,-3] 输出:-6
解题思路:
直接排序,数组分全正,全负,正负都有三种情况
全正:由于是降序所以最后三个相乘最大
全负:前三个相乘最大
半正半负:最小的两个负数乘出最大正数(负数相乘的结果中最大)再乘最大正数即可
class Solution(object):
def maximumProduct(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
nums.sort()#降序排序
x=nums[-1]*nums[-2]*nums[-3]#全为正降序后倒数三个为最大
y=nums[0]*nums[1]*nums[-1]#如果出现有正有负则取最小的两个复数和最大的正数
z=nums[0]*nums[1]*nums[2]#全为负则正三个最大
end=max(x,y,z)
return end