Leetcode Easy

Problem

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

Solution

class Solution {
    public int[] twoSum(int[] nums, int target) {

        HashMap<Integer, Integer> hm = new HashMap<>();

        for (int i = 0; i < nums.length; i++){
            int curTgt = target - nums[i];

            // Check if we've already seen the corresponding number
            if (hm.containsKey(curTgt))
                return new int[]{hm.get(curTgt), i};

            hm.put(nums[i], i);
        }

        // Should never reach here per the problem description
        return new int[] {0, 0};
    }
}

How it works

For each number, we put the value in the array, and the corresponding index. We also check for the number that we are looking for and if it is there, we return the two indices.