1 minute read

Problem Statement

Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.

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

You can return the answer in any order.

 

Example 1:

Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].
Example 2:

Input: nums = [3,2,4], target = 6
Output: [1,2]
Example 3:

Input: nums = [3,3], target = 6
Output: [0,1]

Intuition

Upon examining the problem, my initial thought is to find a pair of numbers in the given list that adds up to the target value.

Approach

The chosen approach is to iterate through the list while keeping track of the complement for each number (target minus the current number) in a hash_map. By checking if the complement is already in the hash_map, I can identify a pair that satisfies the target sum condition.

Complexity

  • Time complexity: O(n), where n is the length of the input list. The algorithm iterates through the list once.

  • Space complexity: O(n), as the hash_map stores information about each number in the list.

Code

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        hash_map = defaultdict()
        for i, num in enumerate(nums):
            comp = target - num
            if comp in hash_map:
                return [i, hash_map[comp]]
            hash_map[num] = i
        return [-1, -1]