思路
如果x能分到两个集合当中,显然分,如果只能分一个就分一个,第一个不能分的就是某个集合要返回的mex
值。
C++
#include <iostream>
using namespace std;
const int maxn = 110;
int a[maxn];
int main(int argc, char *argv[]) {
int t;
cin >> t;
while(t--){
int n;
cin >> n;
for(int i = 0; i <= n; i++) a[i] = 0;
for(int i = 1; i <= n; i++){
int x;
cin >> x;
a[x]++;
}
int ans = 0;
for(int i = 0; i <= 100; i++){
if(a[i]){
a[i]--;
}else{
ans += i;
break;
}
}
for(int i = 0; i <= 100; i++){
if(a[i]==0){
ans += i;
break;
}
}
cout<<ans<<endl;
}
return 0;
}
Python
N = 110
t = int(input())
def mex():
for i in range(N):
if st[i]==0:
return i
else:
st[i]-=1
for _ in range(t):
n = int(input())
a = list(map(int,input().split()))
st = [0]*N
for i in range(n):
st[a[i]]+=1
x = mex()
y = mex()
print(x+y)