给定 个从大到小递减的不重复整数,判断整数是否出现过,出现过输出出现的位置(位置从1开始),没出现过则输出No 题目有 组询问,对于每组询问输出一行答案C++代码
时间: 2024-12-20 16:23:21 浏览: 6
这个问题是在设计一个简单的查找算法,用于检查给定的一组不重复整数数组中是否存在特定整数及其位置。如果该整数存在,程序需要返回它的索引(从1开始计数),否则输出"No"。在C++中,你可以使用二分搜索法(Binary Search)来提高查找效率,因为数组已排序。
以下是解决此问题的C++代码示例:
```cpp
#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; // 返回目标值在数组中的位置(注意加1)
} else if (nums[mid] > target) {
right = mid - 1; // 目标值可能在左半部分
} else {
left = mid + 1; // 目标值可能在右半部分
}
}
return -1; // 如果未找到目标,返回-1表示"No"
}
void solve(int queries[], int n) {
for (int i = 0; i < n; ++i) {
int query = queries[i];
int position = binarySearch(some_sorted_array, query);
if (position != -1) {
cout << "Position: " << position << endl;
} else {
cout << "No" << endl;
}
}
}
int main() {
vector<int> some_sorted_array; // 你的输入数组,需填充并保持递减
int queries[] = {...}; // 一组查询的整数
int num_queries = sizeof(queries) / sizeof(queries[0]);
solve(queries, num_queries);
return 0;
}
```
请注意,你需要替换`some_sorted_array`为你实际的、已经按降序排列的整数数组,并提供对应的查询数组`queries`。同时,这个代码示例假设输入数组`some_sorted_array`已经被初始化并且包含了题目所描述的情况。
阅读全文