628. Maximum Product of Three Numbers(Java)

来源:互联网 发布:广电网络的wifi网址 编辑:程序博客网 时间:2024/06/15 13:53

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:先排序,时间复杂度O(nlogn) ,空间复杂度O(1)

class Solution {    public int maximumProduct(int[] nums) {        Arrays.sort(nums);        int len = nums.length;        return Math.max(nums[len - 1] * nums[len - 2] * nums[len - 3], nums[0] * nums[1] * nums[len - 1]);    }}

代码2:时间复杂度O(n),空间复杂度O(1)

class Solution {    public int maximumProduct(int[] nums) {        int max1 = Integer.MIN_VALUE, max2 = Integer.MIN_VALUE, max3 = Integer.MIN_VALUE, min1 = Integer.MAX_VALUE, min2 = Integer.MAX_VALUE;        for (int n : nums) {            if (n > max1) {                max3 = max2;                max2 = max1;                max1 = n;            } else if (n > max2) {                max3 = max2;                max2 = n;            } else if (n > max3)                max3 = n;        }        for (int n : nums) {            if (n < min1) {                min2 = min1;                min1 = n;            } else if (n < min2)                 min2 = n;        }        return Math.max(max1 * max2 * max3, max1 * min1 * min2);    }}
原创粉丝点击