题目描述
给出一个整数数组,请在数组中找出两个加起来等于目标值的数,
你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于index2.。注意:下标是从1开始的
假设给出的数组中只存在唯一解
例如:
给出的数组为 {2, 7, 11, 15},目标值为9
输出 ndex1=1, index2=2
/**
* @author yuchen
* @version 1.0
* @date 2020-07-06 11:32
*/
public class S1 {
public static void main(String[] args) {
int[] c = {0,4,3,0};
int[] result = twoSum(c,0);
System.out.println(Arrays.toString(result));
}
public static int[] twoSum (int[] arr, int target) {
//定义结果数组,如果查询不到 则返回{-1.-1}
int[] result = {-1,-1};
//<数组的值,数组下标+1>
HashMap<Integer,Integer> map = new HashMap<>();
for(int i=0;i<arr.length;i++){
map.put(arr[i],i+1);
}
for(int j=0;j<arr.length;j++){
//得到第二个数的值
int target2 = target - arr[j];
if(map.containsKey(target2) && (j+1)!=map.get(target2)){
result[0] = j+1;
result[1] = map.get(target2);
return result;
}
}
//没查到则返回{-1,-1}
return result;
}
}