一个很火的面试题

最近这道题见到好几次了,就记录一下吧

思路

先按位或,将数组中每个对应的位置标1。之后按位与,查找那个没被标为1的位置,就是缺失的数字了。

实现代码

#include<iostream>
#include<vector>
using namespace std;

void find_loser(vector<int>&input){

	int res=0;	
	for(auto i:input){
		res |=(1<<i);
	}
	
	for(int i=1; i<=input.size();i++){
		if((res & (1<<i))==0){
			cout<<i<<endl;
			return;
		}
	}
}

int main(){
	vector<int>input={1,2,3,4,6,7,8,9,10};
	find_loser(input);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_29996285/article/details/88018583