每日力扣628

给你一个整型数组 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)
原文地址:https://www.cnblogs.com/liuxiangyan/p/14443540.html