检查具有给定产品的子数组是否存在于 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