#4337. CSP 2023 入门级第一轮——寻找被移除的元素
CSP 2023 入门级第一轮——寻找被移除的元素
问题: 原有长度为 n+1 公差为 1 等差数列,将数列输到程序的数组时移除了一个元素,导致长度为 n 的连续数组可能不再连续,除非被移除的是第一个或最后一个元素。需要在数组不连续时,找出被移除的元素。试补全程序。
#include <iostream>
#include <vector>
using namespace std;
int find_missing(vector<int>& nums) {
int left = 0, right = nums.size() - 1;
while (left < right){
int mid = left + (right - left) / 2;
if (nums[mid] == mid + ①) {
②;
} else {
③;
}
}
return ④;
}
int main() {
int n;
cin >> n;
vector<int> nums(n);
for (int i = 0; i < n; i++) cin >> nums[i];
int missing_number = find_missing(nums);
if (missing_number == ⑤) {
cout << "Sequence is consecutive" << endl;
}else{
cout << "Missing number is " << missing_number << endl;
}
return 0;
}
{{ select(1) }} ①处应填什么?
- 1
- nums[0]
- right
- left
{{ select(2) }} ②处应填什么操作分?
- left = mid + 1
- right = mid - 1
- right = mid
- left = mid
{{ select(3) }} ③处应填什么操作?
- left = mid + 1
- right = mid - 1
- right = mid
- left = mid
{{ select(4) }} ④处应填什么?
- left + nums[0]
- right + nums[0]
- mid + nums[0]
- right + 1
{{ select(5) }} ⑤处应填什么值?
- nums[0] + n
- nums[0] + n - 1
- nums[0] + n + 1
- nums[n-1]