最近总听到一些小伙伴们谈论web面试时碰到的算法问题,今天我们就还谈一谈web前端面试时遇到这些问题。
一.数组去重问题
数组去重问题应该是前端面试时被问到最多的算法题了,大概是酱紫滴!
您好,这里有一个数组,arr=[1,2,1,4,5,6,3,4,7,8,4,5],怎么去实现去重操作呢?
不要着急,咱们先看下思路。
思路:
1.构建一个新的数组存放结果。
2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比。
3.若结果数组中没有该元素,则存到结果数组中。
代码如下:
恩!不错!那你还有什么别的方法么?(当时她是这样的表情,↓)
别着急!我可以!
思路:
1.先将原数组进行排序
2.检查原数组中的第i个元素与结果数组中的最后一个元素是否相同,因为已经排序,所以重复元素会在相邻位置
3.如果不相同,则将该元素存入结果数组中
代码如下:
再来一个?(脑补上图的表情)
思路:
1.创建一个新的数组存放结果
2.创建一个空对象
3.for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入到第2步建立的对象中。
代码如下:
您还有别的方法么?(请大家脑补那个画面,心里已经开始骂人辣!)
看看下面的思路!
思路:
1.创建一个空数组。
2.遍历数组arr中每一个数字。
3.判断:如果这个数的下标和这个数在数组中出现的第一次的位置是相同的话,将这个数添加到数组中。
代码如下:
二.数组排序问题
被问到最多的除了数组去重,也就是数组排序了。同样还是那个arr数组,您有什么思路么?
1.冒泡排序,这是最常见的排序方法,这里就不过多介绍了。
代码如下:
2.快速排序,通过中间值的方式反复比较进行排序。
代码如下:
3.插入排序,通过一判断一个数和旁边数的大小进行比较,进而排序。
代码如下:
今天Web中常见的算法问题(上)到这里就结束了。
希望能够对您有帮助!别忘了北京治疗白癜风费用是多少北京中科中医院好不好