【leetcode】三个数的最大乘积
程序员文章站
2024-03-16 17:53:46
...
三个数的最大乘积
问题描述:
给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
1.初步解法:
正负分开存放在数组中,空间消耗大
class Solution:
def maximumProduct(self, nums: List[int]) -> int:
a=[]
b=[]
for i in nums:
if i>=0:
a.append(i)
elif i<0:
b.append(i)
if len(a)>0:
mul =None
num1=max(a)
a.remove(num1)
print(len(a))
if len(a)>=2:
num2=max(a)
a.remove(num2)
num3=max(a)
mul=num1*num2*num3
print(mul)
res=mul
if len(b)>=2:
num_1=min(b)
b.remove(num_1)
num_2=min(b)
mul2=num1*num_1*num_2
if (not mul==None):
res=max(mul,mul2)
else:
res=mul2
else:
num_1=min(b)
b.remove(num_1)
num_2=min(b)
b.remove(num_2)
num_3=min(b)
b.remove(num_3)
res=num_3*num_1*num_2
return res
2.解法二:
排序后最大值只能是最大的三个数相乘或最小的值和最大的两个值相乘
class Solution:
def maximumProduct(self, nums: List[int]) -> int:
nums = sorted(nums, reverse=True)
return max(nums[0]*nums[1]*nums[2],nums[0]*nums[-1]*nums[-2])
sort()函数有个reverse参数,可以规定排序的规则。
上一篇: 《美团编程题》丢失的三个数