📅  最后修改于: 2023-12-03 15:40:14.930000             🧑  作者: Mango
产品子集是指一个数组中由若干个元素相乘而得到的结果。在一个给定的整数数组中,找出最大和最小的乘积子集。
通过寻找正负数的数量,可以判断出是寻找最大乘积子集还是最小乘积子集。
在找到所有的子集之后,计算它们的乘积,并且在其中找出最大和最小的乘积子集。
时间复杂度为$O(2^{n})$。
下面是python实现代码:
class Solution:
def maxProduct(self, nums: List[int]) -> int:
"""
:type nums: List[int]
:rtype: int
"""
def get_product(l):
if not l:
return 0
product = 1
for i in l:
product *= i
return product
max_product = float('-inf')
min_product = float('inf')
for i in range(len(nums)):
for j in range(i, len(nums)):
prod = get_product(nums[i:j+1])
max_product = max(prod, max_product)
min_product = min(prod, min_product)
return max_product, min_product
s = Solution()
nums = [2,3,-2,4]
print(s.maxProduct(nums)) # (6, -48)