给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
示例 1:
输入: [1,2,3]
输出: 6
示例 2:
输入: [1,2,3,4]
输出: 24
注意:
给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。
输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。
数字有可能有负数
由于是三个数的最大乘积,所以就符号而言,有三种情况:
(1) 三个均为正
(2) 一个正,两个负
(3)如果数字全部为负
数组长度大于等于3的时候,找到三个数的乘积最大需要满足两个条件
- 有0个负数,即三个数都是正数且最大
- 有2个负数,一个正数
题可以转化为,查找3个最大的数并且查找两个最小的数,查找到以后,比较三个最大的数的乘积和两个最小的数与一个最大的数的乘积的大小
class Solution(object):
def maximumProduct(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums)==3:
return nums[0]*nums[1]*nums[2]
elif len(nums)<3:
return 0
else:
nums.sort()
return max(nums[-1]*nums[-2]*nums[-3], nums[0]*nums[1]*nums[-1])