# Two Sum (Java) – Leetcode

### Problem:

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

#### Example

Input: numbers={2, 7, 11, 15}, target=9
Output: index1=0, index2=1

### Solution

#### Java Solution

package com.programtak.beginner.tutorial.leetcode;

import java.util.HashMap;
import java.util.Map;

public class Solution {

public static void main(String[] args) {
int[] inputNums = {2,7, 11, 15};
int[] output = twoSum(inputNums, 9);
System.out.println("index[0] :"+ output[0] + ", index[1] :"+ output[1]);
}

public static int[] twoSum(int[] inputNums, int target) {
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < inputNums.length; i++) {
int complement = target - inputNums[i];
if (map.containsKey(complement)) {
return new int[] { map.get(complement), i };
}
map.put(inputNums[i], i);
}
throw new IllegalArgumentException("two sum solution not possible");
}
}

#### Output

index[0] :0, index[1] :1

#### Analysis

Time complexity depends on the put and containsKey operations of HashMap which is normally O(1). Time complexity of this solution is O(n).

Space complexity depends on the number of items stored in the hash table, which stores at most n elements, so it is O(n).

Like this post? Don’t forget to share it!