给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
答案:
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
int[] result =new int[2];
for(int i=0;i<nums.length;i++){
map.put(target-nums[i],i);
}
for(int i=0;i<nums.length;i++){
if(map.containsKey(nums[i]) && map.get(nums[i])!=i){
result[0] = map.get(nums[i]);
result[1] = i;
break;
}
}
return result;
}
}
思路
- 先计算出目标值减去数组中的得数
- 然后再次循环,判断数组中是否相减与得数相等
- map 中的值并且不与自身相同
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于