#402. CSP2023PJ-19

CSP2023PJ-19

  1. (完善程序)

(寻找被移除的元素)问题:原有长度为 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]