मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है और हम इसमें से दो जोड़े चुनना चाहते हैं ताकि इन दोनों जोड़ों के योग का निरपेक्ष अंतर न्यूनतम हो।
उदाहरण के लिए, यदि इनपुट nums = [3, 4, 5, 10, 7] है, तो आउटपुट 1 होगा, क्योंकि हम जोड़े (3+7) और (4+5) चुन सकते हैं जिनका अंतर 1 है।
समाधान दृष्टिकोण
इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:
distances :=एक नई सूचीiको 0 सेlen(nums)-2तक:jकोi+1सेlen(nums)-1तक:[abs(nums[i]-nums[j]), i, j]कोdistancesके अंत में डालें
distancesको सॉर्ट करेंans := 1e9iको 0 सेlen(distances)-2तक:[dist, i1, i2] := distances[i]j := i+1[dist2, i3, i4] := distances[j]- जब तक
j < len(distances)और{i1,i2,i3,i4}के तत्व यूनिक नहीं हैं:[dist2, i3, i4] := distances[j]j := j+1
- यदि
{i1,i2,i3,i4}के तत्व यूनिक हैं:ans := min(ans, dist2 - dist)
ansलौटाएं
उदाहरण कोड
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