数组去重面试

简介: 在面试中,数组去重是一个常见的问题,主要考察应聘者对数据结构和算法的理解与应用能力。以下提供两种数组去重的方法,并给出相应的解释和分析。方法一:使用Set数据结构Set是一种特殊的数据

在面试中,数组去重是一个常见的问题,主要考察应聘者对数据结构和算法的理解与应用能力。以下提供两种数组去重的方法,并给出相应的解释和分析。

方法一:使用Set数据结构

Set是一种特殊的数据结构,它类似于数组,但成员的值都是唯一的,没有重复的值。利用Set的这一特性,我们可以轻松实现数组的去重。

具体步骤如下:

  1. 创建一个Set对象,并将原数组作为参数传入。

2 由于Set会自动去重,因此此时Set中存储的就是去重后的数据。

  1. 使用Array.from()方法将Set对象转换回数组。

示例代码如下:


fuction fn(ary) {
   

   let s  new Se(ary);

   return Arra.from(s);

}



let arr = [12, 2, 4, 12, 85, 5, 62, 1];

console.log(fn(arr)) // 输出 [12, 2, 4, 85, 62, 1]

方法二:使用indexOf方法

indexOf方法用于查找数组中某个元素的第一个匹配项并返回其索引。如果未找到匹配项,则返回-1。我们可以利用这一特性来判断某个元素是否已经在新的去重数组中出现过。

具体步骤如下:

  1. 创建一个空的新数组,用于存储去重后的数据。

  2. 遍历原数组中的每个元素。

  3. 对于每个元素,使用indexOf方法检查它是否已经在新的去重数组中出现过。如果未出现(即indexOf返回-1),则将其添加到新数组中。

  4. 遍历完成后,新数组就是去重后的结果。

注意:虽然这种方法可以实现重,但其效率相对较低,因为对于每个元素都需要遍历一次新数组来检查是否已存在。如果原数组较大,可能会导致性能问题。

示例代码如下(接续上面的代码):


function fn2(array) {
   

    let newArray = [];

    for (let i = 0, len =array.length; i \u003c len; i++) {
   

        let item = array[i];

        if (newArray.indexOf(item) === -1) {
   

            newArray.push(item);

        }



    eturn newArray;

}



console.log(fn2(arr)); // 输出 [12, 2, 4, 85, 6, 1]

在面试中,可以根据实际情况选择合适的方法进行数组去重,并向面试官解释清楚所选方法的原理和优缺点。同时,也可以尝试自己思考其他可能的去重方法,以展示自己的思维能力和编程技巧。linklinklink

相关文章
|
7月前
|
存储 前端开发 索引
【面试题】数组去重的五种方法(必会)
【面试题】数组去重的五种方法(必会)
178 1
|
7月前
|
前端开发 JavaScript 程序员
【面试题】如何实现数组去重的?有几种方式?
【面试题】如何实现数组去重的?有几种方式?
|
7月前
|
前端开发 Java API
【面试题】数组去重你想到几种办法呢?
【面试题】数组去重你想到几种办法呢?
|
7月前
|
存储 前端开发 索引
【面试题】数组去重的五种方法
【面试题】数组去重的五种方法
|
7月前
|
前端开发 JavaScript API
[前端面试题]:数组去重的几种方法
[前端面试题]:数组去重的几种方法
|
JavaScript 前端开发 索引
手撕前端面试题(Javascript~事件委托、数组去重、合法的URL、快速排序、js中哪些操作会造成内存泄漏......
手撕前端面试题(Javascript~事件委托、数组去重、合法的URL、快速排序、js中哪些操作会造成内存泄漏......
161 0
手撕前端面试题(Javascript~事件委托、数组去重、合法的URL、快速排序、js中哪些操作会造成内存泄漏......
|
存储 前端开发 索引
面试官在“逗”你系列:数组去重你会几种呀?
数组去重是一个老生常谈的话题,也是前端童鞋在面试时的一道高频题。本文将深入的探索数组去重的原理及实现,为各位小伙伴提供多种可以反手“调戏”面试官的解决方案。
150 0
|
JavaScript
【JS面试题】数组去重(6种方法)震惊面试官
今天来介绍面试中被频繁问到的问题:数组去重
424 0
|
JavaScript
数组去重12种方案(经典面试必问)
7月9日 19:00-21:30 阿里云开发者社区首场“Offer 5000”直播开启!15位团队技术大牛在线招人,更有《阿里云技术面试红宝书》助你拿下Offer!马上投递简历:https://developer.aliyun.com/special/offerday01
801 0
|
28天前
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!