问题 6073 --寻找被移除的元素(完善程序)

6073: 寻找被移除的元素(完善程序)★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 364  解决: 192
[提交][状态][命题人:]

题目描述

原有长度为 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 << "-1" << endl;
	}else{
		cout<<missing_number<<endl;
	}
	return 0;
}

输入

第一行输入一个正整数n,   2<=n<=1000

第二行为n个空格隔开的正整数

输出

如果给定的数列是等差数列,则输出-1

否则输出被删除的元素

样例输入
Copy
8
2 3 5 6 7 8 9 10
样例输出
Copy
4

提示

样例2输入

7

5 6 7 8 9 10 11

样例2输出

-1

来源

[提交][状态]