import java.util.*;
public class Solution {
static HashMap<Integer, Integer> map=new HashMap<>();
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @param target int整型
* @return int整型一维数组
*/
public int[] twoSum (int[] nums, int target) {
// write code here
for (int i = 0; i < nums.length; i++) {
map.put(nums[i], i+1);
}
int a[]=new int[2];
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
Integer keyInteger=entry.getKey();
Integer valueInteger=entry.getValue();
Integer bInteger=map.get(target-keyInteger);
if(bInteger!=null&&valueInteger<bInteger) {
a[0]=valueInteger;
a[1]=map.get(target-keyInteger);
}
}
return a;
}
}
这一题是很基础的哈希表题目,创建一个键值都为Integer的HashMap,然后把数组里面的值作为键,把索引作为值,传给哈希表。然后遍历哈希表,判断哈希表中是否存在键为target-keyInteger的键值对存在,如果存在,并且满足索引前者小于后者,那么就符合要求,把它们的索引装进数组中返回即可



京公网安备 11010502036488号