Problem of The Day: Two Sum
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]