zoukankan      html  css  js  c++  java
  • 数组去重是面试中经常问到的问题

    数组去重是面试中经常问到的问题

    [html] view plain copy
    1. var arr=[1,3,4,52,4,5,4,8,7,6];  


    第一种方法:使用ES5中的indexOf进行去重:
    [javascript] view plain copy
    1. function arr1(){  
    2.       var n=[];  
    3.        for(var i=0;i<arr.length;i++){  
    4.            if(n.indexOf(arr[i])==-1){  
    5.                n.push(arr[i]);  
    6.            }  
    7.        }  
    8.        return n;  
    9.    }//先定义一个空数组,然后遍历数组,使用indexOf检查是否含有重复元素,如果没有则插入到n中。使用此类方法应考虑ES5的兼容性问题  
    [javascript] view plain copy
    1.   

    运行结果如下:
    第二种方法:先排序后然后再相邻比较去重
    [javascript] view plain copy
    1. function arr3(){  
    2.          arr.sort();  
    3.         var re=[arr[0]];  
    4.         for(var i=1;i<arr.length;i++){  
    5.             if(arr[i]!==re[re.length-1]){  
    6.                 re.push(arr[i]);  
    7.   
    8.             }  
    9.         }  
    10.         return re;  
    11.     }  
    此种方法比第一种效率更好:
    第三种方法:使用map去重
    [javascript] view plain copy
    1. function arr4(arr){  
    2.         var map={};  
    3.         if(arr&&Array.isArray(arr)){  
    4.             for(var i=arr.length;i>=0;--i){  
    5.                 if(arr[i] in map){  
    6.                     arr.splice(arr[i],1);  
    7.                 }else{  
    8.                     map[arr[i]] = true;  
    9.                 }  
    10.             }  
    11.         }  
    12.         return arr;  
    13.   
    14.     }  

    效率最高:
  • 相关阅读:
    新概念英语(1-25)Mrs. Smith's Kitchen
    新概念英语(1-23)Which glasses?
    新概念英语(1-21)Whick book
    BZOJ2212: [Poi2011]Tree Rotations(线段树合并)
    BZOJ4773: 负环(倍增Floyd)
    洛谷P1155 双栈排序(贪心)
    洛谷P1024 一元三次方程求解(数学)
    洛谷P1072 Hankson 的趣味题(数学)
    2018.10.26NOIP模拟赛解题报告
    洛谷P2831 愤怒的小鸟(状压dp)
  • 原文地址:https://www.cnblogs.com/codepen2010/p/6900218.html
Copyright © 2011-2022 走看看