题目:
628. 三个数的最大乘积 给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。 示例 1: 输入:nums = [1,2,3] 输出:6 示例 2: 输入:nums = [1,2,3,4] 输出:24 示例 3: 输入:nums = [-1,-2,-3] 输出:-6 https://leetcode-cn.com/problems/maximum-product-of-three-numbers/
解法一:首先对数组进行排序 ,然后比较大小,这块儿主要思考的就是 是正数的乘积最大还是开头负数的乘积最大(千万别忘了负负得正)。
提交后出现小数组报错,所以设置了一个n<=3
public int maximumProduct1(int[] nums) {
int n = nums.length;
int sum = 1;
if (n<=3){
for (int num : nums) {
sum *= num;
}
return sum;
}
Arrays.sort(nums);
if (nums[n-3]*nums[n-2]*nums[n-1] > nums[0]*nums[1]*nums[n-1]){
sum = nums[n-1]*nums[n-2]*nums[n-3];
}else {
sum = nums[0]*nums[1]*nums[n-1];
}
return sum;
}
解法二:精简版(一定不要忘记或者忽略Math API,不然会浪费很多的墨水)
public int maximumProduct(int[] nums) {
int n = nums.length;
Arrays.sort(nums);
return Math.max(nums[0]*nums[1]*nums[n-1],nums[n-2]*nums[n-3]*nums[n-1]);
}