मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची और एक मान target है। हमें उन जोड़ों की अधिकतम संख्या ढूंढनी है जहां प्रत्येक जोड़ी i < j के लिए, i और j किसी अन्य जोड़ी में नहीं हैं, और |nums[i] - nums[j]| >= target।
इसलिए, यदि इनपुट nums = [2, 4, 6, 10, 11], target = 5 जैसा है, तो आउटपुट 2 होगा, क्योंकि हमें जोड़े मिल सकते हैं: (2, 6), (5, 10)
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −
- N := A का आकार
- सूची A को सॉर्ट करें
- ans := 0
- j := N / 2
- i के लिए 0 से N / 2 तक की रेंज में, करें
- जब तक j < N और A[j] - A[i] < target, करें
- j := j + 1
- यदि j < N, तो
- ans := ans + 1
- j := j + 1
- जब तक j < N और A[j] - A[i] < target, करें
- 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