Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

In [22]:
class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        d = {} # keys are the diff and the value should be the last observed index
        
        for i in range(len(nums)):
            if target - nums[i] in d:
                return sorted([i, d[target - nums[i]]])
            else:
                d[nums[i]] = i
                
mysol = Solution()

print ("solution", mysol.twoSum([2, 7, 11, 15], 26))
print ("solution", mysol.twoSum([3, 2, 4], 6))


solution [2, 3]
solution [1, 2]

In [ ]: