Pair Sum to Target

easy array hash map

Problem

Given an array of integers and a target value, return the indices of two distinct elements whose sum equals the target. You may assume exactly one such pair exists.

Inputnums = [2, 7, 11, 15], target = 9
Output[0, 1]
nums[0] + nums[1] == 2 + 7 == 9.

def pair_sum(nums, target):
    seen = {}
    for i, x in enumerate(nums):
        need = target - x
        if need in seen:
            return [seen[need], i]
        seen[x] = i
    return None
function pairSum(nums, target) {
  const seen = new Map();
  for (let i = 0; i < nums.length; i++) {
    const need = target - nums[i];
    if (seen.has(need)) return [seen.get(need), i];
    seen.set(nums[i], i);
  }
  return null;
}
class Solution {
    public int[] pairSum(int[] nums, int target) {
        Map<Integer, Integer> seen = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            int need = target - nums[i];
            if (seen.containsKey(need)) return new int[]{ seen.get(need), i };
            seen.put(nums[i], i);
        }
        return null;
    }
}
vector<int> pairSum(vector<int>& nums, int target) {
    unordered_map<int, int> seen;
    for (int i = 0; i < (int)nums.size(); i++) {
        int need = target - nums[i];
        if (seen.count(need)) return { seen[need], i };
        seen[nums[i]] = i;
    }
    return {};
}
Time: O(n) Space: O(n)