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.
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
/**
* Created by lxw, liwei4939@126.com on 2018/2/28.
*/
import java.util.HashMap;
import java.util.Map;
public class TwoSum {
public static int[] twoSum(int[] nums, int target){
Map<Integer, Integer> map = new HashMap<>();
for(int i=0; i<nums.length; i++){
map.put(nums[i], i);
}
for(int i=0; i<nums.length; i++){
int complement = target-nums[i];
if(map.containsKey(complement) && map.get(complement) != i){
return new int[]{i, map.get(complement)};
}
}
throw new IllegalArgumentException("No two sum solution");
}
public static void main(String[] args){
int[] nums = {2,7,11,15};
int target = 13;
int[] res =twoSum(nums, target);
System.out.println("index1 = "+res[0] + ", index2 = "+ res[1]);
}
}