题目
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
给定 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) {
}
}
以上给出方法输入参数,完成作答。
题目分析
1、给定一个整数数组和一个目标值,从数组中找到两个数和为目标值
2、数组中同一元素只能使用一次
3、分析可得需要记录数组中的值及其下标,在每次数组取值时进行求和运算
解答分析
本文只分析本人做题思路,仅供参考,了解一种解题思想,其他各种做题思路请上网查阅。
解答成功:
执行耗时:0 ms,击败了100.00% 的Java用户
内存消耗:38.3 MB,击败了95.79% 的Java用户
class Solution {
public int[] twoSum(int[] nums, int target) {
//创建一个 Map 用于存储元素及其下标
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
//循环元素
int m = nums[i];
int n = target - m;
if (map.get(n) != null) {
//若两元素和为目标值,则返回对应下标
return new int[]{ map.get(n),i};
} else {
//否则将元素及其下表存入 Map
map.put(m, i);
}
}
return new int[]{};
}
}