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