这个题目,对于alice而言,第一次需要拿最小的出现一次的元素,否则,这个元素就会被bob拿到,也就是最小的结果。对于bob而言,第一个最小的出现一次的元素已经被拿了,要想最优化答案,bob需要拿第二个最小的出现第一次的元素。我们需要遍历0-n,如果mp[i]为0,那么i就是答案,因为这个i永远不会被填充。如果mp[i]为1,我们让cnt++,当cnt为2的时候这就是我们的答案。
typedef unsigned long long ull;
typedef long long ll;
using namespace std;
const int N = 1 << 19;
const int mod = 1e9 + 7;
/**
* 不要使用#define int long long
* 不开long long见祖宗
* ----YuFei Zhou
*/
void solve() {
int n;
cin>>n;
map<int,int> mp;
for (int i = 1; i <= n; ++i) {
int x;
cin>>x;
mp[x]++;
}
int cnt = 0,ans = 0;
for (int i = 0; i <= n; ++i) {
if(mp[i] == 0){
ans = i;
break;
}else if(mp[i] == 1){
cnt++;
if(cnt == 2){
ans = i;
break;
}
}
}
cout<<ans<<endl;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL),cout.tie(NULL);
int t = 1;
cin>>t;
while(t--){
solve();//1 2 3 4 5
}
return 0 ;
}