给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 示例 : 输入:nums = [3,2,4], target = 6 输出:[1,2]
时间: 2023-08-14 09:54:40 浏览: 96
下面是一个解决给定问题的 Java 代码示例:
```java
import java.util.HashMap;
public int[] twoSum(int[] nums, int target) {
// 创建一个哈希表用于存储数组元素和对应的索引
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int complement = target - nums[i];
// 检查哈希表中是否存在与当前元素匹配的差值
if (map.containsKey(complement)) {
return new int[]{map.get(complement), i};
}
// 将当前元素及其索引加入哈希表
map.put(nums[i], i);
}
return new int[]{-1, -1}; // 没有找到符合条件的组合
}
```
在该代码中,我们使用了一个哈希表来存储数组元素及其对应的索引。我们遍历数组,并计算当前元素与目标值的差值 `complement`。然后检查哈希表中是否存在与 `complement` 相等的键值,如果存在,则返回对应的索引;如果不存在,则将当前元素及其索引加入哈希表。通过这种方式,我们可以通过一次遍历找到和为目标值的两个整数,并返回它们的数组下标。
在给定示例中,我们可以通过调用 `twoSum(new int[]{3, 2, 4}, 6)` 来得到结果 `[1, 2]`。
阅读全文