给你一个包含n个元素的数组a,并且数组中的元素已经按照从小到大的顺序排列好,找出数组a中大于x的最小元素。 输入: 共三行。 第一行,一个整数n(1≤n≤1000)。 第二行,n个整数,用于表示数组中的每个元素(均为1到1000范围内的整数),且保证数组中的每个元素都小于等于它后面的元素。 第三行,一个整数x(1≤x≤1000)。 输出: 一个整数,用于表示数组a中大于x的最小元素。如果数组a中所有的元素都小于等于x,则输出0。 输入样例: 5 1 2 3 4 5 3 输出样例: 4 c++
时间: 2024-04-12 11:28:42 浏览: 79
数组上机题-第六章 数组new
你可以使用以下C++代码来解决这个问题:
```cpp
#include <iostream>
#include <vector>
int findNextGreater(std::vector<int> nums, int x) {
int left = 0;
int right = nums.size() - 1;
int result = 0;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] > x) {
result = nums[mid];
right = mid - 1; // 继续在左半边查找更小的元素
} else {
left = mid + 1; // 在右半边查找
}
}
return result;
}
int main() {
int n;
std::cin >> n;
std::vector<int> nums(n);
for (int i = 0; i < n; i++) {
std::cin >> nums[i];
}
int x;
std::cin >> x;
int nextGreater = findNextGreater(nums, x);
std::cout << nextGreater << std::endl;
return 0;
}
```
在这个示例中,我们首先读取输入的整数n,表示数组的大小。然后,我们创建一个大小为n的向量`nums`来存储输入的数组元素。
接下来,我们使用`for`循环将n个整数读入向量`nums`中。
然后,我们读取输入的整数x。
最后,我们调用`findNextGreater`函数来查找大于x的最小元素,并将结果输出到控制台。注意,如果数组中所有的元素都小于等于x,则输出为0。
你可以根据输入样例运行这个代码,并查看输出结果。
阅读全文