【题目描述】
给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
示例 1:
输入: [1,2,3]
输出: 6
示例 2:
输入: [1,2,3,4]
输出: 24
注意:
给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。
输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-product-of-three-numbers
【解题思路】
这道题有一个大坑就是:-100,-98,-1,2,3,4这种案例,一开始只想找到最大的三个数相乘返回最后的结果,但是这个案例的结果其实是:-100✖️-98✖️4。所以这道题需要找到前三大的数和后两小的数(一次遍历找出),然后比较是top1✖️top2✖️top3大还是top1✖️最小的两个数大。用Python实现的代码如下:
class Solution(object):
def maximumProduct(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
MIN = -1001
MAX = 1001
top1, top2, top3 = MIN, MIN, MIN
first, second = MAX, MAX
for item in nums:
if item>=top1:
top3=top2
top2=top1
top1=item
elif top2<=item<top1:
top3=top2
top2=item
elif top3<=item<top2:
top3=item
if item<=first:
second=first
first=item
elif first<item<=second:
second=item
return max(top1*top2*top3, top1*first*second)