今天参加公司的一个小比赛, 其中有一道题目是这样的:
要求:求一维数组中最小且不重复的数字。(不使用任何库) 必须兼容chrome和火狐浏览器.

例如:[70,23,65,754,23,23,56,656] 答案:56

获胜条件: 1.程序正确 2.代码最短(统计方法:函数代码.length)

函数结构要求 :

/**
* 函数名必须为game
* @param {Array} 测试数组,每个元素为大于0的int,长度不限
* @return {Number} 最小值,不重复
*/
function game(a){
//函数内容
}
测试用例:
[223,4314,5234,2233,12,334,803,12,86,9045,86,2384,101,583]
[593,53,682,654,2,1,943,1,193,512]
[1,1,1,2]

当时小组分工不同,我没做这道题目,现在有时间了,回过头来看看,发现还有点意思,当时现场最短的字符数好像是113, 限制时间是半个小时.
下面我自己吭哧吭哧研究了半天,最短弄到96个字符
function game(d){a=[];for(c in d)a[d[c]]=a[d[c]]?-1:1;for(i=0;i<a.length;i++)if(a[i]>0)return i}

最新版:
//84 无全局变量正则版
function game(a){return eval((‘Math.min(‘+a.sort()+’)’).replace(/(\b\d+,)\1+/g,”))}
//88 无全局变量遍历版
function game(l,j,f){j=[];for(f in l)j[l[f]]=j[l[f]]?2:1;f=0;while(j[f]!=1)f++;return f}
//84 更短版
function game(l){j=[];for(f in l)j[l[f]]=j[l[f]]?2:1;f=0;while(j[f]!=1)f++;return f}

 

不知道还有大神能更短不   欢迎赐教PK