【Lintcode】1119. Maximum Product of Three Numbers

题目地址:

https://www.lintcode.com/problem/maximum-product-of-three-numbers/description

给定一个长 n n n的数组 A A A,取其中三个数使得乘积最大。返回最大乘积。题目保证 n ≥ 3 n\ge 3 n3

如果 A A A里有正数,那答案就是最大的三个正数乘积或者最大的正数乘以最小的两个负数;如果 A A A里没正数,则答案是最大的三个负数乘积。无论怎样,答案就是最大的三个数乘积或者最大的数乘以最小的两个数乘积。代码如下:

import java.util.Arrays;

public class Solution {
     
    /**
     * @param nums: an integer array
     * @return: the maximum product
     */
    public int maximumProduct(int[] nums) {
     
        // Write your code here
        Arrays.sort(nums);
    
        int n = nums.length;
        return Math.max(nums[n - 1] * nums[n - 2] * nums[n - 3], nums[n - 1] * nums[1] * nums[0]);
    }
}

时间复杂度 O ( n log ⁡ n ) O(n\log n) O(nlogn),空间 O ( 1 ) O(1) O(1)

你可能感兴趣的:(#,二分,位运算与数学,leetcode,数据结构,算法)