ধরুন আমাদের nums নামে একটি অ্যারে আছে এবং এতে ধনাত্মক এবং ঋণাত্মক সংখ্যা রয়েছে। আমাদের আরেকটি মান k আছে। আমাদের চেক করতে হবে যে কোনো সাবারে যার গুণফল k হল অ্যারেতে উপস্থিত আছে কি না।
সুতরাং, যদি ইনপুটটি nums =[-2,-1,1,3,5,8], k =6 এর মত হয়, তাহলে আউটপুটটি True হবে কারণ সাব্যারে [-2,-1,3]পি>
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- সর্বনিম্ন :=সংখ্যা[0], সর্বোচ্চ :=সংখ্যা[0]
- prod_max :=সংখ্যা[0]
- আমি রেঞ্জ 1 থেকে সংখ্যার আকার - 1 এর জন্য, কর
- যদি nums[i] <0, তারপর
- সর্বোচ্চ এবং সর্বনিম্ন অদলবদল করুন
- সর্বোচ্চ :=সংখ্যার সর্বোচ্চ [i] এবং (সর্বোচ্চ * সংখ্যা[i])
- সর্বনিম্ন :=সর্বনিম্ন সংখ্যা[i] এবং (সর্বনিম্ন * সংখ্যা[i])
- যদি সর্বনিম্ন বা সর্বোচ্চ হয় k এর সমান, তাহলে
- সত্য ফেরান
- prod_max :=prod_max এর সর্বোচ্চ এবং সর্বোচ্চ
- যদি nums[i] <0, তারপর
- মিথ্যে ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ কোড
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