1. 本题知识点
哈希表
2. 题目描述
给出一个整数数组,请在数组中找出两个加起来等于目标值的数,
你给出的函数 twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于 index2.。
注意:下标是从 1 开始的。
假设给出的数组中只存在唯一解
例如:
给出的数组为 {20, 70, 110, 150},目标值为90
输出 index1=1, index2=2
3. 解题思路
- 遍历数组,用哈希表存储数组的数据和它的下标
- 在遍历数组的过程中,判断是否存在两个加起来等于目标值的数,如果存在返回下标。
4. 代码
import java.util.*;
public class Solution {
/**
*
* @param numbers int整型一维数组
* @param target int整型
* @return int整型一维数组
*/
public int[] twoSum (int[] numbers, int target) {
HashMap<Integer, Integer> map = new HashMap<>();
int[] result = new int[2];
for(int i = 0; i < numbers.length; i++) {
if (map.containsKey(target - numbers[i])) {
result[0] = map.get(target - numbers[i]);
result[1] = i+1;
return result;
} else {
map.put(numbers[i], i+1);
}
}
return result;
}
}