用python写一段代码,要求给定一组整数,还有一个目标数,在给定这组整数中找到两个数字,使其和为目标数,如找到,解是唯一的。找不到则显示 "no answer"。输出的下标按从小到大排序。用一重循环加字典实现。 输入格式: 在一行中给出这组数。 在下一行输入目标数 输出格式: 在一行中输出这两个数的下标,用一个空格分开。
时间: 2024-02-13 18:01:59 浏览: 108
delete--number.rar_K._delete namber_delete number_给定n位正整数
5星 · 资源好评率100%
好的,下面是实现该功能的代码:
```python
num_list = list(map(int, input().split()))
target = int(input())
num_dict = {}
for i, num in enumerate(num_list):
if target - num in num_dict:
print(num_dict[target - num], i)
break
num_dict[num] = i
else:
print("no answer")
```
首先,我们通过 `input()` 函数获取一行输入,然后用 `split()` 方法分割成整数列表。接着,再读取一行输入,获取目标数。
然后,我们定义一个空字典 `num_dict`,用来存储遍历过的数字和它的下标。我们使用 `enumerate()` 函数来遍历整数列表,同时获取数字的下标。在遍历过程中,我们判断目标数与当前数字的差值是否在字典中,如果在,说明找到了两个数字的和为目标数,直接输出它们的下标并结束循环。如果遍历完整个列表仍未找到符合条件的数字,则输出 "no answer"。
因为是用字典实现,所以时间复杂度为 $O(n)$,比暴力枚举的 $O(n^2)$ 更快。
阅读全文