मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची और एक मान k है, हमें यह जांचना है कि क्या हम सूची में तीन अद्वितीय एलिमेंट ढूंढ सकते हैं जिनका योग k है।
तो, यदि इनपुट nums = [11, 4, 6, 10, 5, 1], k = 20 जैसा है, तो आउटपुट True होगा, क्योंकि हमारे पास [4, 6, 10] संख्याएं हैं जिनका योग 20 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- सूची nums को सॉर्ट करें
- l := 0, r := nums के आकार - 1
- जब l < r - 1, करें
- t := k - nums[l] - nums[r]
- यदि nums[r - 1] < t, तो l := l + 1, लूप से बाहर आएं
- m को l + 1 से r तक की रेंज में लिए, करें
- यदि nums[m] > t, तो r := r - 1, लूप से बाहर आएं
- यदि nums[m], t के समान है, तो True लौटाएं
- False लौटाएं
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
class Solution:
def solve(self, nums, k):
nums.sort()
l, r = 0, len(nums) - 1
while l < r - 1:
t = k - nums[l] - nums[r]
if nums[r - 1] < t:
l += 1
continue
for m in range(l + 1, r):
if nums[m] > t:
r -= 1
break
if nums[m] == t:
return True
return False
ob1 = Solution()
nums = [11, 4, 6, 10, 5, 1]
k = 20
print(ob1.solve(nums, k))
इनपुट
[11, 4, 6, 10, 5, 1], 20
आउटपुट
True