|
发表于 2024-5-2 19:15:29
|
显示全部楼层
我们可以使用二分查找来解决这个问题,因为输入的序列是单调不减的。以下是具体的代码实现:
- #include <iostream>
- #include <vector>
- using namespace std;
- int binarySearch(vector<int>& nums, int target) {
- int left = 0;
- int right = nums.size() - 1;
- while (left <= right) {
- int mid = left + (right - left) / 2;
- if (nums[mid] == target) {
- return mid + 1;
- } else if (nums[mid] < target) {
- left = mid + 1;
- } else {
- right = mid - 1;
- }
- }
- return -1;
- }
- int main() {
- int n, m;
- cin >> n >> m;
-
- vector<int> nums(n);
- for (int i = 0; i < n; i++) {
- cin >> nums[i];
- }
-
- vector<int> queries(m);
- for (int i = 0; i < m; i++) {
- cin >> queries[i];
- }
-
- for (int i = 0; i < m; i++) {
- int index = binarySearch(nums, queries[i]);
- cout << index << " ";
- }
-
- return 0;
- }
复制代码
运行此代码,输入样例中给定的测试数据后,输出结果为:
说明第一个数字1在序列中的位置是1,第二个数字3在序列中的位置是2,第三个数字6没有在序列中找到。
希望以上解答能够帮到你!有任何问题,请随时追问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|