给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
示例 1:
输入:nums = [1,2,3]
输出:6
示例 2:
输入:nums = [1,2,3,4]
输出:24
示例 3:
输入:nums = [-1,-2,-3]
输出:-6
[](()Solution
- 注意可以有负数
- 注意两个负数相乘为正数
三个数乘积最大有几种情况?
-
三个最大正数的乘积,以及两个最小负数与最大正数的乘积,二者之间的最大值即为所求答案。
-
如何找打最大正数和最小负数?
-
排序 or 线性扫描
[](()Code
所有
leetcode
代码已同步至[github](()
欢迎
star
/**
- @author 一条coding
*/
class Solution {
public int maximumProduct(int[] nums) {
// 升序
Arrays.sort(nums);
int n = nums.length;
return Math.max(nums[0] * nums[1] * nums[n - 1], nums[n - 3] * nums[n - 2] * nums[n - 1]);
}
} 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】
[](()Result