zoukankan      html  css  js  c++  java
  • 数组去重

    数组去重是一道面试的经典题型,出现在各大公司的面试题中

    思路1:

      复制一个新的数组,用每个元素跟新数组中查找是否存在,不存在则添加入新数组

    function unique( arr ){
        var list = [];
        for( var i=0,l = arr.length;i<l;i++ ){
            if( list.indexOf(arr[i]) == -1 ){
                list.push(arr[i])
            }
        }        
        return list
    }

    思路2:

      给数组排序,排序之后比较前后两个值,相同则去除上一个,继续比较,循环之后将数组中的空值去掉

    function unique( arr ){
        var list = [];
        arr.sort(function(a,b){return a>b});
        for( var i=0,l = arr.length-1;i<l;i++ ){
            if( arr[i] == arr[i+1] ){
                arr[i] = undefined
            }
        }
        for( var i=0,l = arr.length;i<l;i++ ){
            if( arr[i] !== undefined ){
                list.push(arr[i])
            }
        }     
        return list
    }

      代码可以把两次循环精简成一次

    function unique( arr ){
        var list = [];
        arr.sort(function(a,b){return a>b});
        list.push(arr[0])
        for( var i=1,l = arr.length;i<l;i++ ){
            if( arr[i] > list[list.length-1] ){
                list.push(arr[i])
            }
        }
        return list
    }

    思路3:

      需要选择一种合适的哈希算法,将对象转化为唯一值来做比较

    function unique( arr ){
        var obj = {},list = [];
        for( var i = 0,length = arr.length;i<length;i++ ){
            var hash_value = 哈希算法(arr[i])
            if( !(hash_value in obj) ){
                obj[hash_value] = true;
                list.push(arr[i])
            }
        }
        return list
    }
  • 相关阅读:
    记一个在训练模型过程中自己给自己挖的坑
    Fast R-CNN学习总结
    SPP-net论文总结
    R-CNN学习总结
    3Sum Closest
    3Sum
    整数转为罗马数字
    Container With Most Water
    决策树
    回文数判断
  • 原文地址:https://www.cnblogs.com/xiaxiaodong/p/8277623.html
Copyright © 2011-2022 走看看