📜  最大和最小产品子集(1)

📅  最后修改于: 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)