求助
  • 板块灌水区
  • 楼主乌丑
  • 当前回复5
  • 已保存回复5
  • 发布时间2021/11/4 22:36
  • 上次更新2023/11/4 01:25:23
查看原帖
求助
551130
乌丑楼主2021/11/4 22:36

只用二分
一个长度为n-1的递增数组中所有的数字都是唯一的, 并且每个数字都在范围0~n-1之内,
在范围内的n个数字中有且只有一个数字不在该数组中, 请找出这个数字。 n<100

#include<bits/stdc++.h>
using namespace std;
int queshide(int num[],int x) {
	int left=0;
	int right=x-1;
	while(left<=right) {
		int mid=(left+right)/2;
		if(num[mid]==mid) left=mid+1;
		else right=mid-1;
	}
	return left;
}
int main() {
	int a,b[100];
	cin>>a;
	for(int i=0; i<a-1; i++)
		cin>>b[i];
	cout<<queshide(b,a);
}
2021/11/4 22:36
加载中...