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.

排序,然后前后枚举一下就行了  3种情况。

或者不排序,球最大的3个和最小的三个也可以

class Solution {
public:
    int maximumProduct(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        int n = nums.size();
        vector<int> v;
        v.push_back(nums[n - 1] * nums[n - 2] * nums[n - 3]);
        //v.push_back(nums[0] * nums[1] * nums[2]);
        v.push_back(nums[n - 1] * nums[0] * nums[1]);
        v.push_back(nums[n - 1] * nums[n - 2] *nums[0]);
        int ans = INT_MIN;
        for (int x : v) {
            ans = max(ans,x);
        }
        return ans;
    }
};

 

posted on 2017-07-28 16:22  Beserious  阅读(143)  评论(0编辑  收藏  举报