मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची और एक मान k है, हमें nums में तीन अद्वितीय प्रविष्टियाँ (a, b, c) ढूंढनी हैं जैसे कि |a + b + c - k| न्यूनतम हो और निरपेक्ष अंतर लौटाना है।
तो, यदि इनपुट nums = [2, 5, 25, 6], k = 14 जैसा है, तो आउटपुट 1 होगा क्योंकि यदि हम [2, 5, 6] लेते हैं तो हमें 14 के सबसे करीब 13 मिलेगा और निरपेक्ष अंतर |13 - 14| = 1 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- सूची nums को सॉर्ट करें
- ans := 1e9
- i को 0 से nums के आकार तक की रेंज में लिए, करें
- j := i + 1
- k := nums के आकार - 1
- जब j < k, करें
- s := nums[i] + nums[j] + nums[k]
- यदि s <= target, तो ans := ans और target - s का न्यूनतम, j := j + 1
- अन्यथा, ans := ans और s - target का न्यूनतम, k := k - 1
- ans लौटाएं
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
class Solution:
def solve(self, nums, target):
nums.sort()
ans = 1e9
for i in range(len(nums)):
j = i + 1
k = len(nums) - 1
while j < k:
s = nums[i] + nums[j] + nums[k]
if s <= target:
ans = min(ans, target - s)
j += 1
else:
ans = min(ans, s - target)
k -= 1
return ans
ob1 = Solution()
nums = [2, 5, 25, 6]
k = 14
print(ob1.solve(nums, k))
इनपुट
[2, 5, 25, 6], 14
आउटपुट
1