Question:
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.
Example
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
Code:
HashMap思路,key为数组的值,value为数组下标
当target-key在map中时,条件成立,返回两个value值,注意顺序即可
Java
public class Solution {
public int[] twoSum(int[] nums, int target) {
int[] result = new int[2] ;
HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
for(int i=0;i<nums.length;i++){
if(map.containsKey(target-nums[i])){
result[0]= map.get(target-nums[i]);
result[1]= i;
}else{
map.put(nums[i],i);
}
}
return result;
}
}
JS
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
var len = nums.length;
var map = {};
if(len<2) return null ;
for(var i=0;i<len;i++){
if(map[target-nums[i]] || map[target-nums[i]] === 0){
return [map[target-nums[i]],i];
}else{
map[nums[i]] = i ;
}
}
};
python
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
map = {} ;
for i,j in enumerate(nums):
if target-j in map:
return [map[target-j],i]
map[j] = i