思路
创建map,键为元素,值为下标
步骤
- 创建HashMap,new HashMap<Integer,Integer>(),第一个Integer代表元素,第二个Integer代表下标
- 循环整个数组
- 判断语句,如果map中存在与当前元素相加为target的元素,直接返回数组
- 否则,将当前元素与其下标存入map中
- 循环结束,没有返回数据,则直接返回new int[]{0,0}
import java.util.*;
public class Solution {
/**
*
* @param numbers int整型一维数组
* @param target int整型
* @return int整型一维数组
*/
public int[] twoSum (int[] numbers, int target) {
// write code here
// 创建map,键为元素,值为下标
Map<Integer,Integer>map = new HashMap<>();
for(int i=0;i<numbers.length;i++){
// 当map中存在与当前元素相加为target的元素时,直接返回
// 注意,这里返回的下标,从1开始
if(map.get(target-numbers[i])!=null){
return new int[]{map.get(target-numbers[i])+1,i+1};
}
// 当前轮次不匹配,将当前元素和下标存入map中
map.put(numbers[i],i);
}
// 没有符合要求的,返回0结果
return new int[]{0,0};
}
}