# 628. 三个数的最大乘积

力扣原题链接(点我直达) (opens new window)

给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。

示例 1:

输入: [1,2,3]
输出: 6
1
2

示例 2:

输入: [1,2,3,4]
输出: 24
1
2

注意:

  1. 给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。
  2. 输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。

# 第一版,自己写的

执行用时 :68 ms, 在所有 cpp 提交中击败了75.20%的用户

内存消耗 :10.8 MB, 在所有 cpp 提交中击败了86.46%的用户

int maximumProduct(vector<int>& nums) {

	if (nums.size() == 3) return nums[0] * nums[1] * nums[2];
	sort(nums.begin(), nums.end());
	int result=0,max = nums[nums.size() - 1], lastMax = nums[nums.size() - 2];
	int secondMin = nums[1];

	if (secondMin < 0) {

		int temp = nums[0] * secondMin * max;
		result = max * lastMax * nums[nums.size() - 3];
		result = result > temp ? result : temp;

	}
	else
	{
		result = max * lastMax * nums[nums.size() - 3];
	}

	return result;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22