给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按任意顺序返回答案。 用java
时间: 2024-09-27 15:01:35 浏览: 27
在Java中,这个问题通常可以使用哈希集合(HashSet)来解决。我们可以遍历数组,对于每个元素,检查目标值减去它的差是否已经在集合中存在。如果存在,那么找到了一对符合条件的数字及其索引。以下是简单的步骤:
1. 创建一个空的HashSet用于存储遇到过的数字。
2. 遍历数组nums:
- 计算当前元素和target之间的差值(diff)。
- 如果这个差值在集合中,说明我们已经找到了一对和为目标值的数,此时返回这两个元素的索引。
- 否则,将当前元素添加到集合中。
3. 如果遍历完整个数组都没有找到解决方案,返回一个表示无解的结果或者异常。
这是一个示例代码片段:
```java
import java.util.HashSet;
public int[] twoSum(int[] nums, int target) {
HashSet<Integer> set = new HashSet<>();
for (int i = 0; i < nums.length; i++) {
int complement = target - nums[i];
if (set.contains(complement)) {
return new int[]{set.indexOf(complement), i}; // 返回索引
}
set.add(nums[i]);
}
throw new IllegalArgumentException("No solution found"); // 或者返回默认null或特殊值
}
```
阅读全文