मान लीजिए हमारे पास दो सरणियां nums1 और nums2 और एक मान k है। हमें जांचना है कि क्या nums1 के किसी एक तत्व को [-k, k] रेंज के किसी मान से जोड़कर (केवल एक बार) दोनों सरणियों को बराबर बनाया जा सकता है।
उदाहरण के लिए, यदि nums1 = [5, 7, 11], nums2 = [5, 5, 11], k = 8 है, तो आउटपुट True होगा क्योंकि हम nums1[1] में -2 जोड़ सकते हैं (जो [-8, 8] की रेंज में है) जिससे यह 5 हो जाएगा और nums2 के बराबर हो जाएगा।
हल करने का तरीका
- nums1 और nums2 को सॉर्ट करें
- temp := False, idx := -1
- दोनों सरणियों की तुलना करें: यदि किसी इंडेक्स पर मान अलग हैं:
- यदि पहले से कोई अंतर मिला था (temp True है), तो False लौटाएं
- temp := True, idx := वर्तमान इंडेक्स
- यदि कोई अंतर नहीं मिला (idx = -1) या अंतर का निरपेक्ष मान ≤ k है, तो True लौटाएं
- अन्यथा False लौटाएं
उदाहरण कोड
def solve(nums1, nums2, k):
nums1.sort()
nums2.sort()
temp = False
idx = -1
for i in range(len(nums1)):
if nums1[i] != nums2[i]:
if temp:
return False
temp = True
idx = i
if idx == -1 or abs(nums1[idx] - nums2[idx]) <= k:
return True
return False
nums1 = [5, 7, 11]
nums2 = [5, 5, 11]
k = 8
print(solve(nums1, nums2, k))
इनपुट
[5, 7, 11], [5, 5, 11], 8
आउटपुट
True