给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
示例1:
输入: [1,2,3]
输出: 6
示例2:
输入: [1,2,3,4]
输出: 24
这个题吧,本来想用itertools的但是我没引入进来。。然后就直接暴力解法了。。
class Solution:
def maximumProduct(self, nums: List[int]) -> int:
a = []#用来存放正数
b = []#用来存放复数
for x in nums :#将数字分类到a,b中
if x >=0 :
a.append(x)
elif x < 0 :
b.append(x)
if len(nums) == 3:#如果nums的长为三就直接出结果了。
return nums[0]*nums[1]*nums[2]
if len(b)>=2 :#如果复数列表中的元素在两个以上,那么就可用得出一个正数,并且不管有多少个负数,只要最小的两个,这样的得到的数字最大
a.sort()
b.sort()
if 3>len(a)>0:
result=b[0]*b[1]*a[-1]#两个最小的负数乘以最大的正数
elif len(a)>=3:#有可能三个正数的乘积大于2负1正,进行一下比较
result1=b[0]*b[1]*a[-1]
result2=a[-3]*a[-2]*a[-1]
result=max(result1,result2)
elif len(a)==0:
result=b[-3]*b[-2]*b[-1]
else:
a.sort()
result=a[-1]*a[-2]*a[-3]
return result