Given an array of integers, return indices of the two numbers such that they add up to a specific target. 对于这道题目能够很快的想到用穷举法,
从头开始遍历,对于每个元素,再往后遍历,这样的时间复杂度比较高是O(n)。对于查找具体数值用哈希的方法是很方便的。从头遍历,对于得到的每个
array[i],用target-array[i],看hashmap中是否存在这个key,如果不存在就把(array[i],i)put到hashmap中(边遍历边创建hashmap),如果存在就取出value。
public class Solution {
public int[] twoSum(int[] nums, int target) {
HashMap<Integer,Integer> numPos = new HashMap<Integer, Integer>();
for(int i = 0; i < nums.length ; i++) {
Integer position = numPos.get(target-nums[i]);
if(position == null) {
numPos.put(nums[i],i);
} else {
return new int[]{ i, position };
}
}
return null;
}
}