s4553711
9/7/2017 - 3:31 PM

628.cpp

class Solution {
public:
    int maximumProduct(vector<int>& nums) {
        int m1 = INT_MAX, m2 = INT_MAX;
        int b1 = INT_MIN, b2 = INT_MIN, b3 = INT_MIN;
        for(int i = 0; i < nums.size(); i++) {
            if (nums[i] <= m1) {
                m2 = m1;
                m1 = nums[i];
            } else if (nums[i] <= m2) {
                m2 = nums[i];
            }
            if (nums[i] >= b1) {
                b3 = b2;
                b2 = b1;
                b1 = nums[i];
            } else if (nums[i] >= b2) {
                b3 = b2;
                b2 = nums[i];
            } else if (nums[i] >= b3) {
                b3 = nums[i];
            }
        }
        int r1 = m1 * m2 * b1;
        int r2 = b1 * b2 * b3;
        return r1 > r2 ? r1 : r2;
    }
};