题目
思路(哈希表法)
拿nums=[2,7,11,15],target=9 这个来说明
我们先遍历到2这个数,target=9,要想两数之和等于这个target,那么我们需要一个值为 7(9-2)的数。这时候我们就需要到我们的哈希表里去找,看看哈希表里有没有7。有的话我们返回2的index和7的index。如果没有找到7的话,我们把2放到哈希表里。继续遍历nums的下一个数7。
由于我们要返回数组下标。所以我们的哈希表里除了要存储对应的值,还要存它们在nums数组中的下标。所以我们要用HashMap。
再因为我们是根据值到HashMap里查的,所以我们要将值设为key,下标设为value。
注:题目中说的数组中同一个元素在答案里不能重复出现是指:不能自己加自己。
拿nums=[3,2,4] target=6举例
3+3也等于6,这种情况下要是输出下标的话就是[0,0]了,这种情况是不允许的。
代码
IMPort io.swagger.models.auth.In; import java.util.HashMap; //leetcode submit region begin(Prohibit modification and deletion) class Solution { public int[] twoSum(int[] nums, int target) { Map map = new HashMap(); int[] res = new int[2]; for (int i = 0; i