本人菜鸟一枚,希望通过写博客,做笔记,记下自己的思路,得到大家的指点,取得进步。
题目描述
牛牛最近在组合游戏中经常会遇到求mex,于是他查百度得到:在组合游戏中计算状态的SG值时,我们常常会遇到mex函数。mex(S)的值为集合S中没有出现过的最小自然数。例如,mex({1,2}) =0、mex({0,1,2,3}) = 4。
现在给你集合S,求mex(S)的值。
输入
第一行输入一个整数n,表示集合S有n个元素。(1<=n<=100)
第二行依次输入a1,a2……an,n个整数,代表集合S的元素。(0<=ai<=1000)
输出
输出集合的mex(S)。
样例输入 Copy
5 0 1 2 4 5
样例输出 Copy
3
总的似乎考虑四种情况:
1 没0 如1234,6789,等
2 0~n中间 隔了几个数 例如 01235,01289等
3 什么都不缺 完整的一个数列如 012345 ,012345678等
4 有重复数字但是不缺 如 01122,012233455等
以上我试了好几回,最终考虑使用桶的思想,本人从《啊哈算法》之桶排序 得到的启发
最终写了出来
不知道需不需要排序,反正例子给的是排好序的,那就先输入,后排序