मान लीजिए हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है और हम इसमें से दो जोड़ी संख्याओं का चयन करना चाहते हैं ताकि इन दो जोड़ों के योग के बीच पूर्ण अंतर कम से कम हो।
इसलिए, यदि इनपुट nums =[3, 4, 5, 10, 7] की तरह है, तो आउटपुट 1 होगा, क्योंकि हम इन जोड़ियों को चुन सकते हैं (3 + 7) - (4 + 5) =1। पी>
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- दूरी:=एक नई सूची
- मैं के लिए 0 से लेकर अंकों के आकार - 2 तक, करें
- j के लिए i + 1 से लेकर अंकों के आकार -1 तक के लिए
- एक सूची डालें [|nums[i] - nums[j]| , i, j] दूरियों के अंत में
- सूची दूरियों को क्रमबद्ध करें
- उत्तर:=1^9
- मैं के लिए 0 से दूरी के आकार के लिए - 2, करते हैं
- [जिला, i1, i2] :=दूरियां[i]
- j :=i + 1
- [dist2, i3, i4] :=दूरियां[j]
- जबकि j <दूरियों का आकार और (i1, i2, i3, i4) में तत्व अद्वितीय नहीं हैं, करते हैं
- [dist2, i3, i4] :=दूरियां[j]
- j :=j + 1
- यदि (i1, i2, i3, i4) में तत्व अद्वितीय हैं, तो
- उत्तर :=न्यूनतम उत्तर और (जिला2 - जिला)
- वापसी उत्तर
- j के लिए i + 1 से लेकर अंकों के आकार -1 तक के लिए
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण कोड
class Solution: def solve(self, nums): distances = [] for i in range(len(nums) - 1): for j in range(i + 1, len(nums)): distances.append((abs(nums[i] - nums[j]), i, j)) distances.sort() ans = 1e9 for i in range(len(distances) - 1): dist, i1, i2 = distances[i] j = i + 1 dist2, i3, i4 = distances[j] while j < len(distances) and len({i1, i2, i3, i4}) != 4: dist2, i3, i4 = distances[j] j += 1 if len({i1, i2, i3, i4}) == 4: ans = min(ans, dist2 - dist) return ans ob = Solution() nums = [3, 4, 5, 10, 7] print(ob.solve(nums))
इनपुट
[3, 4, 5, 10, 7]
आउटपुट
1