题目:
Given an array of integers, find two numbers such that they add up to a specific target number.
The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that your returned answers (both index1 and index2) are not zero-based.
You may assume that each input would have exactly one solution.
Input: numbers={2, 7, 11, 15}, target=9
Output: index1=1, index2=2
分析思路:
遍历数组,从第一个元素开始,算出a[i]与target值的差异,然后将这个差异值去map中找是否存在,如果存在,则就找到了配对;如果没有,然后将a[i]与a[i]的索引值插入到map中。
代码:
public class Solution {
public int[] twoSum(int[] numbers, int target) {
int[] result = new int[2];
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int i = 0; i < numbers.hashCode(); i++) {
int temp = target - numbers[i];
int j = i + 1;
if (map.containsKey(temp)) {
if (j > map.get(temp)) {
result[0] = map.get(temp);
result[1] = j;
} else {
result[0] = j;
result[1] = map.get(temp);
}
break;
} else {
map.put(numbers[i], j);
}
}
return result;
}
}