[Leetcode]628. Maximum Product of Three Numbers


 

Given an integer array, find three numbers whose product is maximum and output the maximum product.

Example 1:

Input: [1,2,3]
Output: 6

 

Example 2:

Input: [1,2,3,4]
Output: 24

 

Note:

  1. The length of the given array will be in range [3,104] and all elements are in the range [-1000, 1000].
  2. Multiplication of any three numbers in the input won't exceed the range of 32-bit signed integer.

 

思路:乘积最大,则肯定是寻找三个绝对值最大的数相乘。所以先把数组排序,这样数值最大的数为最后三个。第一反应应该会认为

数组末尾三个数乘积就是答案了。但是数组里可能还会有负数,如果数组最开头两个数是负数,且绝对值很大,则答案可能是头两个数

和数组末尾的那个数相乘;

 

1 class Solution {
2     public int maximumProduct(int[] nums) {
3         Arrays.sort(nums);
4         int p = nums.length;
5         int product1 = nums[p-1]*nums[p-2]*nums[p-3];
6         int product2 = nums[p-1]*nums[0]*nums[1];
7         return product1>product2?product1:product2;
8     }
9 }

 

posted @ 2017-10-26 22:55  SkyMelody  阅读(112)  评论(0编辑  收藏  举报