मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है और nums में तत्व आरोही क्रम में सॉर्ट हैं। हमारे पास एक और मान k भी है, हमें जांचना है कि सूची से लिए गए किन्हीं दो तत्वों का योग k तक है या नहीं। संख्याएं ऋणात्मक या 0 भी हो सकती हैं। हमें इस समस्या को स्थिर मात्रा में स्पेस उपयोग में हल करना है।
इसलिए, यदि इनपुट है nums = [-8, -3, 2, 7, 9], k = 4, तो आउटपुट होगा True, क्योंकि यदि हम 7 और -3 लेते हैं, तो योग 7 + (-3) = 4 है, जो k के समान है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
i := 0j := numsका आकार - 1- जब
i < j, करें:cur_sum := nums[i] + nums[j]- यदि
cur_sumkके समान है, तो:Trueलौटाएं
- अन्यथा जब
cur_sum < k, तो:i := i + 1
- अन्यथा:
j := j - 1
Falseलौटाएं
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
def solve(nums, k):
i = 0
j = len(nums) - 1
while i < j:
cur_sum = nums[i] + nums[j]
if cur_sum == k:
return True
elif cur_sum < k:
i += 1
else:
j -= 1
return False
nums = [-8, -3, 2, 7, 9]
k = 4
print(solve(nums, k))
इनपुट
[-8, -3, 2, 7, 9], 4
आउटपुट
True