如果你想在校招中顺利拿到更好的offer,阿秀建议你多看看前人的经验 ,比如准备简历实习上岸经历校招总结阿里、字节、腾讯、美团等一二线大厂真实面经也欢迎来一起参加秋招打卡活动 等;如果你是计算机小白,学习/转行/校招路上感到迷茫或者需要帮助,可以点此联系阿秀;免费分享阿秀个人学习计算机以来的收集到的好资源,点此白嫖;如果你需要《阿秀的学习笔记》网站中求职相关知识点的PDF版本的话,可以点此下载

# 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