মান ল করুন nums নামের একটি সংখ্যার তালিকা এবং target নামের একটি মান। আমাদের সর্বোচ্চ কতটি পেয়ার বানানো যায় যেখানে প্রতিটি পেয়ারের জন্য i < j, i এবং j অন্য কোনো পেয়ারে নেই, এবং |nums[i] - nums[j]| >= target।
যদি ইনপুট হয় nums = [2, 4, 6, 10, 11], target = 5, তবে আউটপুট হবে ২, কারণ পেয়ারগুলো: (2, 6), (5, 10) — নোট: উদাহরণে টাইপো আছে, সঠিক পেয়ার হলে (4, 10) বা (2, 11) ইত্যাদি।
এটি সমাধান করতে আমরা নিম্নলিখিত ধাপগুলি অনুসরণ করব:
- N := A-এর আকার
- A তালিকাটি সাজান
- ans := 0
- j := N / 2
- i কে ০ থেকে N/2 পর্যন্ত লুপ চালান:
- যখন j < N এবং A[j] - A[i] < target: j := j + 1
- যদি j < N: ans := ans + 1, j := j + 1
- ans ফেরত দিন
বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশনটি দেখুন:
উদাহরণ
class Solution: def solve(self, A, target): N = len(A) A.sort() ans = 0 j = N >> 1 for i in range(N >> 1): while j < N and A[j] - A[i] < target: j += 1 if j < N: ans += 1 j += 1 return ans ob = Solution() nums = [2, 4, 6, 10, 11] target = 5 print(ob.solve(nums, target))
ইনপুট
[2, 4, 6, 10, 11], 5
আউটপুট
2