第一种:暴力解法,双for循环遍历。当数组量太大时会超时
public int[] twoSum (int[] numbers, int target) {
// write code here
int temp;
int twoSum[] = new int[2];
for(int i=0;i<numbers.length;i++){
for(int j=i+1;j<numbers.length;j++){
temp = numbers[i]+numbers[j];
if(temp==target){
twoSum[0] = i+1;
twoSum[1] = j+1;
}
}
}
return twoSum;
}
第二种:使用HashMap处理
public int[] twoSum (int[] numbers, int target) {
// write code here
int twoSum[] = new int[2];
int temp;
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < numbers.length; i++) {
temp = target - numbers[i];
if (map.containsKey(temp)) {
twoSum[0] = map.get(temp) + 1;
twoSum[1] = i + 1;
} else {
map.put(numbers[i], i);
}
}
return twoSum;
}