用 Python 编写的程序,用于查找连续子数组的最大乘积

pythonserver side programmingprogramming更新于 2026/2/2 13:00:17

假设我们有一个名为 nums 的数组,我们必须在一个数组(至少包含一个数字)中找到具有最大乘积的连续子数组元素的乘积。因此,如果数组为 [1,9,2,0,2,5],则输出将为 18,因为连续子数组 [1,9,2] 具有最大乘积。

为了解决这个问题,我们将遵循以下步骤 −

  • max_list := 大小为 nums 的列表,并用 0 填充
  • min_list := 大小为 nums 的列表,并用 0 填充
  • min_list := 大小为 nums 的列表,并用 0 填充
  • 对于 i,范围为 1 到 nums 的长度
    • max_list[i] = max_list[i - 1]*nums[i]、min_list[i - 1]*nums[i] 和 nums[i] 中的最大值
    • min_list[i] = minof min_list[i - 1]*nums[i], nums[i], max_list[i - 1]*nums[i]
  • 返回 max_list 的最大值

让我们看看下面的实现以便更好地理解 −

示例

class Solution(object):
   def maxProduct(self, nums):
      max_list = [0] * len(nums)
      min_list = [0] * len(nums)
      max_list[0] = nums[0]
      min_list[0] = nums[0]
      for i in range(1,len(nums)):
         max_list[i] = max(max(max_list[i-1]*nums[i],min_list[i-1]*nums[i]),nums[i])
         min_list[i] = min(min(min_list[i-1]*nums[i],nums[i]),max_list[i-1]*nums[i])
      return max(max_list)
ob1 = Solution()
print(ob1.maxProduct([1,9,2,0,2,5]))

输入

[1,9,2,0,2,5]

输出

18

相关文章


有用资源