मान लीजिए कि हमारे पास पूर्णांकों की एक सरणी है। हमें दो पूर्णांकों के सूचकांकों को वापस करना होगा, जैसे कि यदि हम उन्हें जोड़ दें, तो हम एक विशिष्ट लक्ष्य तक पहुंच जाएंगे जो कि दिया गया है। यहां हम एक धारणा लेंगे, कि सरणी में हमेशा एक अनूठा समाधान होगा, इसलिए एक ही लक्ष्य के लिए सूचकांकों का कोई भी दो सेट नहीं होगा।
एक उदाहरण के लिए, मान लीजिए कि एरे ए =[2, 8, 12, 15] की तरह है, और लक्ष्य योग 20 है। फिर यह इंडेक्स 1 और 2 को ए [1] + ए [2] =20 के रूप में लौटाएगा।
इसे हल करने के लिए, हम सरणी के प्रत्येक तत्व के माध्यम से लूप करेंगे। तो इसे हल करने के लिए इन चरणों का पालन करें।
- रिज़ल्ट को होल्ड करने के लिए एक मैप को परिभाषित करें जिसे रेस कहा जाता है
- इंडेक्स i के लिए 0 से n - 1 की सीमा में (जहाँ n सरणी में तत्वों की संख्या है)
- यदि लक्ष्य - A[i] रेस में मौजूद है
- रिटर्न रेस[टारगेट - ए[i]] और मैं इंडेक्स के रूप में
- अन्यथा i को res में res[A[i]] − =i के रूप में रखें
- यदि लक्ष्य - A[i] रेस में मौजूद है
आइए बेहतर ढंग से समझने के लिए कार्यान्वयन देखें
उदाहरण
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]