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!

Leave a Reply

Your email address will not be published. Required fields are marked *