java 给定一个整数数组和目标值 请你在该数组中找出和为目标值的两组数,并返回数组下标
时间: 2024-10-08 14:25:46 浏览: 41
这个问题通常涉及到双指针算法,也称为“哈希表”或“两个指针”的解决方案,在Java中可以这样解决:
```java
import java.util.HashMap;
public int[] twoSum(int[] nums, int target) {
if (nums == null || nums.length < 2) {
throw new IllegalArgumentException("Input array should have at least two elements");
}
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[0];
}
```
这个函数首先检查输入数组的有效性,然后遍历整个数组。对于每个元素,它计算目标值减去当前元素得到的补数。如果这个补数已经在哈希表`map`中,那么我们就找到了一对和为目标值的数字,返回它们的下标。如果没有,就把当前元素及其下标添加到哈希表中继续查找。
阅读全文