给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以按任意顺序返回答案,但你不能使用两次相同的元素。用java体现
时间: 2024-10-11 10:01:08 浏览: 22
这个问题可以使用哈希集合(HashSet)或者称之为无序双指针法来解决。以下是使用Java语言的一个简单实现:
```java
import java.util.HashSet;
public class Solution {
public int[] twoSum(int[] nums, int target) {
// 使用 HashSet 存储遍历过的数字及其索引
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]);
}
// 没有找到解决方案,抛出异常或者返回 null(这里假设空数组)
throw new IllegalArgumentException("No two sum solution");
}
}
```
在这个实现中,我们首先检查目标值减去当前元素是否已经在集合中,如果在则说明已经找到了一组和为目标值的数;如果没有,则将当前元素加入集合并继续寻找。
阅读全文