解法一:数学

按从小到大的顺序排列后,考虑正负性和0,最大乘积只可能出现于两种组合中。

  1. import java.util.Arrays;
  2. class Solution {
  3. public int maximumProduct(int[] nums) {
  4. final int N = nums.length;
  5. Arrays.sort(nums);
  6. int a = nums[N - 1] * nums[N - 2] * nums[N - 3];
  7. int b = nums[N - 1] * nums[0] * nums[1];
  8. return Math.max(a, b);
  9. }
  10. }