ধরুন আমাদের কাছে সংখ্যার একটি তালিকা আছে যাকে nums বলা হয় এবং সংখ্যার উপাদানগুলিকে ক্রমবর্ধমান ক্রমে সাজানো হয়েছে। আমাদের আরও একটি মান k আছে, আমাদের পরীক্ষা করতে হবে তালিকা থেকে নেওয়া দুটি উপাদান k পর্যন্ত যোগ করে কিনা। সংখ্যাগুলি ঋণাত্মক বা 0ও হতে পারে৷ আমাদের এই সমস্যাটি স্থায়ীভাবে স্থান ব্যবহারের মাধ্যমে সমাধান করতে হবে৷
সুতরাং, ইনপুট যদি nums =[-8, -3, 2, 7, 9] k =4 এর মত হয়, তাহলে আউটপুট হবে True, কারণ আমরা যদি 7 এবং -3 নিই, তাহলে যোগফল হবে 7 + (- 3) =4, যা k এর সমান।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- i :=0
- j :=সংখ্যার আকার - 1
- যখন i
- cur_sum :=nums[i] + nums[j]
- যদি cur_sum হয় k এর সমান, তাহলে
- সত্য ফেরান
- অন্যথায় যখন cur_sum
- i :=i + 1
- j :=j - 1
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(nums, k): i = 0 j = len(nums) - 1 while i < j: cur_sum = nums[i] + nums[j] if cur_sum == k: return True elif cur_sum < k: i += 1 else: j -= 1 return False nums = [-8, -3, 2, 7, 9] k = 4 print(solve(nums, k))
ইনপুট
[-8, -3, 2, 7, 9], 4
আউটপুট
True