# 2Sum

### 描述​

Given an array of integers, find two numbers such that they add up to a specific target number.

The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2.

Example 1:

Input: nums = [2,7,11,15], target = 9

Output: [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^5$
• $-10^9$ <= nums[i] <= $10^9$
• $-10^9$ <= target <= $10^9$
• Only one valid answer exists.

### 代码​

#### HashMap + 两次遍历​

# Two Sum# 方法2：HashMap + 两次遍历。用一个哈希表，存储每个数对应的下标# Time Complexity: O(n)，Space Complexity: O(n)class Solution:    def twoSum(self, nums: List[int], target: int) -> List[int]:        m = {num: i for i, num in enumerate(nums)}        for i, num in enumerate(nums):            complement = m.get(target - num)            if complement is not None and complement > i:                return [i, complement]        return None

#### HashMap + 单次遍历​

# Two Sum# 方法2：HashMap + 单次遍历。用一个哈希表，存储每个数对应的下标# Time Complexity: O(n)，Space Complexity: O(n)class Solution:    def twoSum(self, nums: List[int], target: int) -> List[int]:        m = {}        for i, num in enumerate(nums):            complement = m.get(target - num)            if complement is not None:                return [i, complement]            m[num] = i        return None