给你一个整型数组 nums
,在数组中找出由三个数组成的最大乘积,并输出这个乘积
错解:
class Solution: def maximumProduct(self, nums: List[int]) -> int: max1=max2=max3=float('-inf')#定义正数为负无穷,保证所有的证书都比它大 min1=min2=float('inf')#定义负数为正无穷,保证所有的负数都比它小 for i in nums: if i>max1:#当i比最大的数还大 max3=max2#原老二变成老三 max2=max1#原老大变成老二 max1=i#该数变成老大 elif i>max2:#当i仅仅大于老二 max3=max2#原老二变成老三 max2=i#该数变成老二 elif i>max3:#当i仅仅大于老三 max3=i#该数变成老三,前者的位置不动 for j in nums: if i<min1:#当i比最小的数还小 min2=min1#原最小的数变成了第二小 min1=i elif i<min2:#当i小于第二小的数 min2=i#i变成第二小 return max(max1*max2*max3,min1*min2*max1)
正解:
原来错在第二个循环的j写成i了
class Solution: def maximumProduct(self, nums: List[int]) -> int: max1=max2=max3=float('-inf')#定义正数为负无穷,保证所有的证书都比它大 min1=min2=float('inf')#定义负数为正无穷,保证所有的负数都比它小 for i in nums: if i>max1:#当i比最大的数还大 max3=max2#原老二变成老三 max2=max1#原老大变成老二 max1=i#该数变成老大 elif i>max2:#当i仅仅大于老二 max3=max2#原老二变成老三 max2=i#该数变成老二 elif i>max3:#当i仅仅大于老三 max3=i#该数变成老三,前者的位置不动 for j in nums: if j<min1:#当i比最小的数还小 min2=min1#原最小的数变成了第二小 min1=j elif j<min2:#当i小于第二小的数 min2=j#i变成第二小 return max(max1*max2*max3,min1*min2*max1)