检查具有给定产品的子数组是否存在于 Python 中的数组中

假设我们有一个名为 nums 的数组,它包含正数和负数。我们还有另一个值 k。我们必须检查任何乘积为 k 的子数组是否存在于数组中。

因此,如果输入类似于 nums = [-2,-1,1,3,5,8], k = 6,则输出将为 True,因为子数组为 [-2,-1,3]

为了解决这个问题,我们将按照以下步骤操作 -

  • 最小值:= nums[0],最大值:= nums[0]

  • prod_max := nums[0]

  • 对于范围 1 到 nums - 1 大小的 i,请执行

    • 返回真

    • 交换最大值和最小值

    • 如果 nums[i] < 0,则

    • 最大值 := nums[i] 和 (maximum * nums[i]) 的最大值

    • 最小值 := nums[i] 和 (minimum * nums[i]) 的最小值

    • 如果最小值或最大值与 k 相同,则

    • prod_max := prod_max 和最大值的最大值

    • 返回错误

    让我们看看以下实现以获得更好的理解 -

    示例代码

    def solve(nums, k):

       minimum = nums[0]

       maximum = nums[0]

     

       prod_max = nums[0]

     

       for i in range( 1, len(nums)):

          if nums[i] < 0:

             maximum, minimum = minimum, maximum

          maximum = max(nums[i], maximum * nums[i])

          minimum = min(nums[i], minimum * nums[i])

          if minimum == k or maximum == k:

             return True

     

          prod_max = max(prod_max, maximum)

       return False

    nums = [-2,-1,1,3,5,8]

    k = 6

    print(solve(nums, k))

    输入

    [-2,-1,1,3,5,8], 6
    输出结果
    True

    以上是 检查具有给定产品的子数组是否存在于 Python 中的数组中 的全部内容, 来源链接: utcz.com/z/335653.html

    回到顶部