给定一个整数数组nums和一个整数目标值target ,请你在该数组中找出和为目标值的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同-个元素不能使用两遍。你可以按任意顺序返回答案。用java
时间: 2024-10-08 14:04:43 浏览: 34
这个问题是一个经典的编程问题,通常被称为“两数之和”(Two Sum),它可以用哈希表(Hash Table)或者双指针的方法来解决。以下是使用 Java 编程语言的一个基本解决方案:
```java
import java.util.HashMap;
import java.util.Map;
public int[] twoSum(int[] nums, int target) {
// 创建一个空的哈希映射
Map<Integer, Integer> map = new HashMap<>();
// 遍历数组
for (int i = 0; i < nums.length; i++) {
// 如果目标值减去当前元素已存在于映射中,则找到了一对和为目标值的数
if (map.containsKey(target - nums[i])) {
return new int[] { map.get(target - nums[i]), i };
}
// 将当前元素及其索引添加到映射中,用于后续查找
map.put(nums[i], i);
}
// 如果找不到符合条件的组合,返回一个默认的数组,这里可以抛出异常或者返回特定值表示未找到
throw new IllegalArgumentException("No solution found.");
}
```
这个函数通过将每个元素和它的索引加入哈希表,然后检查目标值减去当前元素是否已经在表中。如果存在,就说明找到了一对和为目标值的数,返回这对数的索引。如果遍历完整个数组都没有找到匹配的,就返回错误信息。
阅读全文