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的键值对存在,如果存在,并且满足索引前者小于后者,那么就符合要求,把它们的索引装进数组中返回即可