题目
给你一个整型数组 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版权协议,转载请附上原文出处链接和本声明。