--- title: '1. Two Sum' description: You are given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target sidebar: label: 'Two Sum' badge: 'Easy' --- Hash Table ::::warning Can you come up with an algorithm that is less than O(n^2) time complexity? :::: ### 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]` ### Constraints: - `2 <= nums.length <= 10^4` - `-10^9 <= nums[i] <= 10^9` - `-10^9 <= target <= 10^9` - Only one valid answer exists. ## Solution ```py class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: seen = {} for i, num in enumerate(nums): complement = target - num if complement in seen: return [seen[complement], i] seen[num] = i return [] ```