新鲜出炉的百度js面试题
(文章是从我的个人主页上粘贴过来的,大家也可以访问我的主页 www.iwangzheng.com)
最近两位同学入职百度,带回来的笔试题基本上毫无悬念,不过有一个小题看到让人忍不住笑出声来,真的很无聊哦,一起来看看吧。
有编号1-100的房间,每个房间都有一扇门,刚开始都是关着的。有编号1-100的人,每个人依次路过每个房间,如果房间号能整除他的编号,就把门的状态改变一下(关的的就打开,打开的就关上)。问最后哪些门是开着的。
开:1,关-1
代码其实超级简单,
var a=[];
for(i=1;i<=100;i++)
{a[i]=-1;}
for(var i=1;i<=100;i++)
{for(var j=1; j<=100; j++)
{if(i%j==0){a[i]*=-1;}
}
}
var re=[];
for(var i=1; i<=100; i++){
if(a[i]==1){
re.push(i);
}
}
alert(re);
不过咱们可以稍微写的大气一点,用上自定义属性就有点高端的味道
var doors=[];
function Door(idx){
this.state=-1;
this.idx=idx;
}
for(var i=0; i<100; i++){
doors.push(new Door(i+1));
}
for(var i=1; i<=100; i++){
for(var j=0; j<100; j++){
if(doors[j].idx%i==0){
doors[j].state*=-1;
}
}
}
var result=[];
for(var i=0; i<100; i++){
if(doors[i].state==1){
result.push(doors[i].idx);
}
}
//console.log(result);
alert(result);