ধরুন আমাদের কাছে nums নামে একটি সংখ্যার তালিকা রয়েছে এবং আরেকটি মান k, আমাদের পরীক্ষা করতে হবে যে তালিকায় আমরা তিনটি অনন্য উপাদান খুঁজে পাব কিনা যার যোগফল k।
সুতরাং, ইনপুট যদি nums =[11, 4, 6, 10, 5, 1] k =20 এর মত হয়, তাহলে আউটপুট হবে True, যেমন আমাদের সংখ্যা [4,6,10] যার যোগফল 20।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
তালিকার সংখ্যাগুলি সাজান
-
l :=0, r :=সংখ্যার আকার − 1
-
যখন l
-
t :=k − nums[l] − nums[r]
-
যদি সংখ্যা [r − 1]
-
l :=l + 1
-
লুপ থেকে বেরিয়ে আসুন
-
-
l + 1 থেকে r পরিসরে m এর জন্য, করুন
-
যদি nums[m]> t হয়, তাহলে
-
r :=r − 1
-
লুপ থেকে বেরিয়ে আসুন
-
-
যদি nums[m] t এর মত হয়, তাহলে
-
রিটার্ন ট্রু
-
-
-
-
রিটার্ন ফলস
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def solve(self, nums, k): nums.sort() l, r = 0, len(nums) − 1 while l < r − 1: t = k − nums[l] − nums[r] if nums[r − 1] < t: l += 1 continue for m in range(l + 1, r): if nums[m] > t: r −= 1 break if nums[m] == t: return True return False ob1 = Solution() nums = [11, 4, 6, 10, 5, 1] k = 20 print(ob1.solve(nums, k))
ইনপুট
[11, 4, 6, 10, 5, 1], 20
আউটপুট
True