14.只用一次循环,实现从一个包含随机数字的数组中查询并返回相加等于目标值的元素索引 例如:有一个数组 num = [2,3,5,11,17,19], 目标 target = 7,返回数组 result = [0,2]
时间: 2024-04-08 21:35:27 浏览: 49
可以使用哈希表来解决这个问题。遍历数组,对于每个元素num[i],在哈希表中查找是否存在目标值减去当前元素的差值(target - num[i])。如果差值存在于哈希表中,则返回差值的索引和当前元素的索引。
以下是使用Java语言实现的示例代码:
```java
import java.util.HashMap;
import java.util.Map;
public class Main {
public static int[] findIndices(int[] nums, int target) {
Map<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]; // 如果没有找到匹配的元素,返回一个空数组
}
public static void main(String[] args) {
int[] nums = { 2, 3, 5, 11, 17, 19 };
int target = 7;
int[] result = findIndices(nums, target);
System.out.println("[" + result[0] + ", " + result[1] + "]");
}
}
```
输出结果为:[0, 2],符合预期。通过哈希表的快速查询特性,我们可以在一次循环内完成查找操作。
阅读全文