Giả sử chúng ta có một mảng được gọi là nums và mảng này chứa các số dương và âm. Chúng ta có một giá trị khác k. Chúng ta phải kiểm tra xem có bất kỳ mảng con nào có sản phẩm là k có trong mảng hay không.
Vì vậy, nếu đầu vào là nums =[-2, -1,1,3,5,8], k =6, thì đầu ra sẽ là True vì mảng con là [-2, -1,3]
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- tối thiểu:=nums [0], tối đa:=nums [0]
- prod_max:=nums [0]
- đối với tôi trong phạm vi từ 1 đến kích thước là nums - 1, thực hiện
- nếu nums [i] <0, thì
- hoán đổi tối đa và tối thiểu
- tối đa:=tối đa nums [i] và (tối đa * nums [i])
- tối thiểu:=tối thiểu nums [i] và (tối thiểu * nums [i])
- nếu tối thiểu hoặc tối đa giống với k, thì
- trả về True
- prod_max:=tối đa là prod_max và tối đa
- nếu nums [i] <0, thì
- trả về Sai
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Mã mẫu
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))
Đầu vào
[-2,-1,1,3,5,8], 6
Đầu ra
True