Given an array of integers nums
and an integer target
, return indices of the two numbers such that they add up to target
.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
You can return the answer in any order.
Example One:
Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].
Solution:
class Solution {
public int[] twoSum(int[] nums, int target) {
HashMap<Integer,Integer> map = new HashMap<>();
int j = 0;
for(Integer k : nums){
map.put(k,j);
j++;
}
for(int i = 0; i < nums.length; i++){
int val = target - nums[i];
if(map.containsKey(val) && map.get(val) != i) return new int[] {i, map.get(val)};
}
return null;
}
}
Hints:
Logics:
- Has a HashMap to store the vales in the array
- put the values as the key and the order as the vlaue in the map
- iterate the array nums, and find the value after minus
- don't forget the special case : if the 3 is 0, and also 3 is also in the map, and the target is 6, but the answer is wrong,because there is only one 3 not two