leetcode 628. 三个数的最大乘积

2022-04-13  本文已影响0人  minningl

题目:

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

示例 1:

输入:nums = [1,2,3]
输出:6

示例 2:

输入:nums = [1,2,3,4]
输出:24

示例 3:

输入:nums = [-1,-2,-3]
输出:-6

提示:

3 <= nums.length <= 104
-1000 <= nums[i] <= 1000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-product-of-three-numbers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路:
1、对列表进行排序
2、排序后的列表共有3种情况:
a)全为正数:则最大值为列表最右边3个数相乘
b)有正有负:则最大值为 列表最右边3个数相乘 或者 左边两个数和最右边数相乘
c)全为负数:则最大值为列表最右边3个数相乘

Python代码:

class Solution(object):
    def maximumProduct(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        nums.sort()
        size = len(nums)
        return max(nums[size-1]*nums[size-2]*nums[size-3], nums[0]*nums[1]*nums[size-1])

思路2:
不排序,直接找3个最大的数和3个最小的数,其他没区别

上一篇下一篇

猜你喜欢

热点阅读