给定一个数组和一个数字,从数组中找到两个元素,这两个元素的和等于给定的数字 要求返回两个元素的下角标,比如a[1,3,5,7]和数字6,返回index1= 1,index2 = 3
public static int[] sum(int nums[],int tarNum){
//首先使用哈希map,存储数组的元素和该元素对应的下角标
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
for(int i = 0;i < nums.length; i++){
map.put(nums[i],i);
}
//定义一个长度为2的数组,记录找到的两个元素的位置
int index[] = new int[2];
//遍历数组,找到第二个元素的位置
for(int i = 0;i < nums.length;i++){
//定义一个数字j,用于记录第二个元素的位置,第一个元素为i不用专门记录
Integer j = map.get(tarNum - nums[i]);
//如果j是位于i的后面并且j存在,就把两个元素各加一并返回
if(j != null && j > i){
index[0] = i + 1;
index[1] = j + 1;
}
}
return index;
}