用python语言编写代码输入 n 个不超过 10^9 的单调非递减(就是后面的数字不小于前面的数字)的非负整数序列a1,a2,…,an,然后进行 m 次询问。对于每次询问,给出一个整数 q,要求输出这个数字在序列中第一次出现的编号,如果没有找到的话输出−1。(1≤n≤10^6,1≤m≤10^5)。用python语言实现
时间: 2023-03-23 19:00:41 浏览: 127
可以用二分查找的方法实现,时间复杂度为O(mlogn)。
具体实现代码如下:
```python
n, m = map(int, input().split())
a = list(map(int, input().split()))
def find_index(q):
left, right = 0, n - 1
while left <= right:
mid = (left + right) // 2
if a[mid] < q:
left = mid + 1
else:
right = mid - 1
if left < n and a[left] == q:
return left + 1
else:
return -1
for i in range(m):
q = int(input())
print(find_index(q))
```
首先输入n和m,以及序列a。然后定义一个函数`find_index`来查找数字q在序列a中第一次出现的编号。函数中使用二分查找的方法来搜索q在a中的位置,找到后返回该位置的编号。如果没找到,则返回-1。
最后对于每次询问,输入数字q,调用`find_index`函数并输出结果即可。