测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A35537. (寻找被移除的元素)问题:原有长度为 n+1公差为1等升数列,将数列输到程序的数组时移除了一个元素,导致长度为 n 的开序数组可能不再连续,除非被移除的是第一个或最后之个元素。需要在数组不连续时,找出被移除的元素。试补全程序。#include <iostream#include <vector>using namespace std;int find missing(vector<int>& n…

填空题 困难

题目描述

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

    }

    return 0;

}

参考答案

<p>①处应填:nums[0] </p><p>②处应填:left=mid+1</p><p>③处应填:right=mid</p><p>④处应填:left+nums[0]</p><p>⑤处应填:nums[n-1]</p>
上一题 下一题