力扣 628. 三个数的最大乘积

题目

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

示例 :

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

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

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

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

方法1:模拟

1、将list按照从大到小排序。

list.sort(reverse=True)

2、一共分为三种情况:全正、全负、有正有负。
3、利用max()函数和min()函数来判断全正和全负的情况。全正和全负情况归为一类。全正出来的乘积为正数,全负出来的为负数;都是用排序后前三相乘。
4、有正有负得出最大乘积有两种情况,一种是三个正数相乘,一种是2个负数和1个正数相乘。

Python实现
class Solution:
    def maximumProduct(self, nums: List[int]) -> int:
        nums.sort(reverse=True)
        if max(nums) < 0 or min(nums) > 0: 
            return nums[0] * nums[1] * nums[2] 
        else:
            return max(nums[-1]*nums[-2]*nums[0] , nums[0]*nums[1]*nums[2])

在这里插入图片描述

Java实现
class Solution {
    public int maximumProduct(int[] nums) {
        // 数组排序
        Arrays.sort(nums);

        return Math.max(nums[0] * nums[1] * nums[nums.length - 1], nums[nums.length - 1] * nums[nums.length - 2] * nums[nums.length - 3]);
    }
}

在这里插入图片描述


版权声明:本文为qq_42467009原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。