public class Solution
{
public int[] twoSum(int[] numbers, int target) {
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
int[] result = new int[2];
for (int i = 0; i < numbers.length; i++) {
if (map.containsKey(numbers[i])) {
int index = map.get(numbers[i]);
result[0] = index+1 ;
result[1] = i+1;
break;
} else {
map.put(target - numbers[i], i);
}
}
return result;
}
}
此代码比较高明的地方在于使用map的key存储我们需要的数值,而他的下标存在value中。
map.containsKey(numbers[i]) 用于判断之前存储的key里有没有值为target-numbers[i],如果有
则找到。
但是上述代码有个缺陷,无法找到所有可能的组合。