设计算法,找出数组中相加之和为目标值的两个数,并输出这两个数的下标。每组输入仅对应一种答案,相同的元素不能被重复利用。 编程要求 输入 多组数据,每组数据有三行,第一行为数组的大小n,第二行为n个元素(元素之间用空格分隔),第三行为目标值,当n=0时输入结束。 输出 对于每组数据分别输出一样,输出两个数的下标(元素间用空格分隔)。
时间: 2023-06-15 15:07:07 浏览: 153
可以使用哈希表来解决这个问题,具体步骤如下:
1. 创建一个哈希表(字典),用来存储数组中每个元素及其下标。
2. 遍历数组,对于每个元素,计算目标值与该元素的差值,检查该差值是否在哈希表中。如果在哈希表中,说明找到了符合条件的两个数,输出它们的下标即可。
3. 如果差值不在哈希表中,则将该元素及其下标存入哈希表中。
4. 如果整个数组遍历完后仍然没有找到符合条件的两个数,则输出"not found"。
下面是对应的 Python 代码实现:
```python
while True:
n = int(input())
if n == 0:
break
nums = list(map(int, input().split()))
target = int(input())
hashmap = {}
found = False
for i in range(n):
complement = target - nums[i]
if complement in hashmap:
print(hashmap[complement], i)
found = True
break
hashmap[nums[i]] = i
if not found:
print("not found")
```
需要注意的是,题目要求每组输入仅对应一种答案,因此在找到符合条件的两个数后,应该立即退出循环,否则可能会输出多个答案。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)