मान लीजिए हमारे पास पूर्णांकों की एक सरणी है। हमें दो पूर्णांकों के सूचकांक वापस करने हैं, जैसे कि यदि हम उन्हें जोड़ते हैं, तो हम एक विशिष्ट लक्ष्य तक पहुंचेंगे जो भी दिया गया है। यहां हम एक मान्यता लेंगे, कि सरणी में हमेशा एक अद्वितीय समाधान होगा, इसलिए एक ही लक्ष्य के लिए दो सेट सूचकांक नहीं होंगे।
उदाहरण के लिए, मान लीजिए सरणी A = [2, 8, 12, 15] जैसी है, और लक्ष्य योग 20 है। तो यह सूचकांक 1 और 2 वापस करेगा, क्योंकि A[1] + A[2] = 20।
हल करने के चरण
- परिणाम रखने के लिए res नामक एक मैप परिभाषित करें
- इंडेक्स i के लिए रेंज 0 से n - 1 तक (जहां n सरणी में तत्वों की संख्या है)
- यदि target - A[i] res में मौजूद है
- res[target - A[i]] और i को सूचकांक के रूप में वापस करें
- अन्यथा i को res में डालें जैसे res[A[i]] = i
- यदि target - A[i] res में मौजूद है
बेहतर समझ के लिए कार्यान्वयन देखें:
उदाहरण
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
required = {}
for i in range(len(nums)):
if target - nums[i] in required:
return [required[target - nums[i]],i]
else:
required[nums[i]]=i
input_list = [2,8,12,15]
ob1 = Solution()
print(ob1.twoSum(input_list, 20))
इनपुट
input_list = [2,8,12,15] target = 20
आउटपुट
[1, 2]