很多校招题是没有严格的标准答案的,只有知识点,只要几个关键点能答上来,不管程序是否真的能跑通,都可以拿分的。比如最常见的一道题:
试题:
有这样一个数组,成员都是数字,例如
var a = [1,2,3,4,5,2,3,4,6,7,8];
请实现a.distinct()方法,用来给数组a去掉重复值,要求对Array的原型进行扩展方法,并尽可能做到效率最优。
Array.prototype.distinct = function(){
var self = this;
var _a = this.concat().sort();
_a.sort(function(a,b){
if(a == b){
var n = self.indexOf(a);
self.splice(n,1);
}
});
return self;
};
考察点:
1,考察应试者是否理解原型链
2,考察应试者是否由意识的控制算法的时间复杂度,了解应试者对专业课知识的掌握程度
3,考察应试者对js数组函数的了解程度
答案1:
Array.prototype.distinct = function(){
var a = [],b=[],oa = this.concat();
for(var i = 1;i<oa.length;i++){
for(var j = 0;j<i;j++){
if(b.indexOf(j)>-1)continue;
if(oa[j] == oa[ i]){
b.push(j);
}
}
}
this.splice(0,this.length);
for(var i = 0;i<oa.length;i++){
if(b.indexOf(i)>-1)continue;
this.push(oa[i ]);
}
return this;
};
答案2:
Array.prototype.distinct = function(){
for(var i = 0;i<this.length;i++){
var n = this[i ];
this.splice(i,1,null);
if(this.indexOf(n) < 0){
this.splice(i,1,n);//不存在重复
}else{
this.splice(i,1);//存在重复
}
}
return this;
};
答案3:
Array.prototype.distinct = function(){
var self = this;
var _a = this.concat().sort();
_a.sort(function(a,b){
if(a == b){
var n = self.indexOf(a);
self.splice(n,1);
}
});
return self;
};
得分点:
1,应试者起码应该自觉通过Array.prototype.distince来实现函数,若没有这样做,则扣分50%
2,应试者起码会给出答案1,得分30%,如果没有使用splice和concate,扣分20%
3,给出答案2的,得分80%,算法复杂度控制在O(n)
4,给出答案3的,得满分,算法复杂度控制在O(1)
分享到:
相关推荐
简单的数组去重、虑空小工具。源码只是接受一个数组,把重复的,和空格去掉
php的二维数组去重,数据结构重建和js数组去重最简方法
【源代码】C++算法(五)一维数组去重(复杂度为n且不新开辟空间) https://blog.csdn.net/handoking/article/details/79751939
JavaScript Array数组去重源码下载
合并一维字符串数组并去重,提供了一个简单的小实例,可以试试看更复杂的情况是否可以处理得好。
本文实例讲述了PHP实现的多维数组去重操作。分享给大家供大家参考,具体如下: 最近用到了一个获取历史会议列表的问题,需要去这个多维数组去重后返回返回给客户端,这里使用了几个php的组装函数,分享下,示例代码...
两个简单的数组去重方式,一个是indexOf和push方法结合数组去重,另一个是ES6中的Set对象实现数组去重,后者代码量少一些
前端基础数组、对象数组去重demo
在真实的项目中碰到的数组去重,一般都是后台去处理,很少让前端处理数组去重。虽然日常项目用到的概率比较低,但还是需要了解一下,以防面试的时候可能回被问到。 注:写的匆忙,加上这几天有点忙,还没有非常认真...
主要介绍了vue中对象数组去重的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
在真实的项目中碰到的数组去重,一般都是后台去处理,很少让前端处理数组去重。虽然日常项目用到的概率比较低,但还是需要了解一下,以防面试的时候可能回被问到。 注:写的匆忙,加上这几天有点忙,还没有非常认真...
JavaScript数组去重的几种方法数组去重的几种方法新建数组法同一个数组删除法利用object/map/set去重法先排序再移除法Filter与indexO
然后今天我用到二维数组了,也想去重,百度一大堆,都是将二维转一维 然后使用array_unique($arr) 看得我很恼火,所以决定自己写一个。比他的简单好懂,记录下来,以备后用 header('content-type:text/html;charset...
给大家总结下JS实现数组去重方法(六种方法),面试中也经常会遇到这个问题。文中给大家引申的还有合并数组并去重的方法,感兴趣的朋友跟随脚本之家小编一起学习吧
数组应用——一维数组排序; 定义一组无序的整型数列,共10个数值,经过一定的处理,使该数组由大到小排列,并输出到屏幕上。具体要求如下: 定义int型数组arrayorder并赋初值为0,长度为10,以承载该数列; 使用...
数组去重是面试中经常被问到的热点问题,数组去重的方法有很多,下面谈谈个人理解。 概括 数组去重是一个比较常见的算法考察点,实现去重的方式无非就是唯一性或者非唯一性,简而言之,就是选出唯一的或者去掉不唯一...
数组去重Java工具类
数组去重与数组扁平化.md
JavaScript 数组去重!!