# 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].

class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        nums_table = {}
        for idx1 in range(len(nums)):
            num = target - nums[idx1]
            if num in nums_table:
                return [nums_table[num], idx1]
            nums_table[nums[idx1]] = idx1
        return [-1,-1]
