只用一次循环,实现从一个包含随机数字的数组中查询并返回相加等于目标值的元素索引 例如:有一个数组 num = [2,3,5,11,17,19], 目标 target = 7,返回数组 result = [0,2]
时间: 2024-04-08 09:34:30 浏览: 40
可以使用双指针方法来实现只用一次循环的要求。具体步骤如下:
1. 创建一个空的字典或哈希表,用于存储数字与其索引的对应关系。
2. 遍历数组中的每个元素:
- 计算当前元素与目标值的差值 diff = target - 当前元素。
- 检查字典中是否存在 diff,如果存在,则返回当前元素的索引和字典中 diff 对应的索引。
- 如果字典中不存在 diff,则将当前元素与其索引存入字典中。
3. 如果遍历完整个数组后仍然没有找到符合条件的元素,则返回空列表。
下面是使用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 diff = target - nums[i];
if (map.containsKey(diff)) {
return new int[]{map.get(diff), i};
}
map.put(nums[i], i);
}
return new int[]{};
}
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: [" + result[0] + ", " + result[1] + "]");
}
}
```
运行以上代码,输出结果为:
```
Result: [0, 2]
```
可以看到,通过只用一次循环和使用字典存储元素与索引的对应关系,我们成功地找到了符合条件的元素索引。
阅读全文