在Python中查找连续子数组的最大乘积的程序

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

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

  • max_list:=大小数字列表,并用0填充

  • min_list:=大小num的列表,并用0填充

  • min_list:=大小num的列表,并用0填充

  • 对于范围从1到nums的i

    • max_list [i] = max_list [i-1] * nums [i],min_list [i-1] * nums [i]和nums [i]的最大值

    • min_list [i] =最小值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

以上是 在Python中查找连续子数组的最大乘积的程序 的全部内容, 来源链接: utcz.com/z/350218.html

回到顶部