একটি অ্যারে nums (পজিটিভ ও নেগেটিভ সংখ্যা) এবং একটি মান k দেওয়া আছে। যাচাই করতে হবে যে কি কোনো সাবঅ্যারে আছে যার গুণফল k।
উদাহরণ
ইনপুট: nums = [-2, -1, 1, 3, 5, 8], k = 6
আউটপুট: True
ব্যাখ্যা: সাবঅ্যারে [-2, -1, 3]-এর গুণফল ৬।
অ্যালগরিদম (Kadane-সদৃশ)
minimumওmaximumপ্রোডাক্ট ট্র্যাক করুন।- নেগেটিভ সংখ্যা পেলে
minimumওmaximumসোয়্যাপ করুন। - প্রতিটি ধাপে
minimumবাmaximumk-এর সমান হলেTrue।
উদাহরণ কোড
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)) # Output: True
ইনপুট
[-2, -1, 1, 3, 5, 8], 6
আউটপুট
True