Question
Given an array of integers nums
and an integer
target
, return the 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
Input: nums = [2, 7, 11, 15], target = 9
Output: [0, 1]
Explanation: nums[0] + nums[1] == 9
My Notes
- Brute force is O(n²) — not efficient.
- Use a hash map to track
number → index
. -
For each element, check if
target - num
is in the map. - If yes, return the current index and the stored one.
- This reduces the complexity to O(n).
func twoSum(nums []int, target int) []int { seen := make(map[int]int) for i, num := range nums { if j, ok := seen[target-num]; ok { return []int{j, i} } seen[num] = i } return nil }
function twoSum(nums, target) { const seen = {}; for (let i = 0; i < nums.length; i++) { const complement = target - nums[i]; if (seen[complement] !== undefined) { return [seen[complement], i]; } seen[nums[i]] = i; } return []; }