赞
踩
Leetcode 1.两数之和 JAVA
拿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<Integer, Integer> map = new HashMap<>();
int[] res = new int[2];
for (int i = 0; i < nums.length; i++) {
int temp = target - nums[i];
if (map.containsKey(temp)) {
res[0] = i;
res[1] = map.get(temp);
break;
}
map.put(nums[i], i);
}
return res;
}
}
//leetcode submit region end(Prohibit modification and deletion)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。