[LeetCode][Python]628. 三个数的最大乘积

给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。

示例 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])
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容