6、用Java设计一个函数,有两个参数分别为整数数组array和整数target,其功能在数组array中找出,和为目标值target的两个数,并返回它们的数组下标!(提示:返回双重数组,因为可能多个整数对的和为target)
时间: 2024-02-13 07:07:31 浏览: 64
leetcode2sumc-array_leetcode:leetcode刷题总结,此部分是array
好的,这是一个比较典型的数组问题,可以使用哈希表来解决。我们可以遍历数组,将每个数与目标值的差存入哈希表中,然后在遍历的过程中,查找当前数在哈希表中是否存在,若存在,则说明找到了一对符合条件的数,返回它们的下标即可。下面是相应的Java函数实现:
```java
public static int[][] findTwoSum(int[] array, int target) {
Map<Integer, Integer> map = new HashMap<>(); // 哈希表
List<int[]> list = new ArrayList<>(); // 存储结果
for (int i = 0; i < array.length; i++) {
if (map.containsKey(array[i])) { // 若存在和为target的数
int[] pair = {map.get(array[i]), i};
list.add(pair);
}
map.put(target - array[i], i); // 存储差值
}
int[][] res = new int[list.size()][2];
for (int i = 0; i < list.size(); i++) {
res[i] = list.get(i);
}
return res;
}
```
例如,若输入数组为 [2, 7, 11, 15],目标值为 9,则函数返回的数组应该是 [[0, 1]],表示下标为 0 和 1 的两个数相加等于 9。
阅读全文