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

    // 最简单数组去重法
    function unique1(array){
      var n = []; //一个新的临时数组
      //遍历当前数组
      for(var i = 0; i < array.length; i++){
        //如果当前数组的第i已经保存进了临时数组,那么跳过,
        //否则把当前项push到临时数组里面
        if (n.indexOf(array[i]) == -1) n.push(array[i]);
      }
      return n;
    }

    排序后相邻去除法

    虽然原生数组的”sort”方法排序结果不怎么靠谱,但在不注重顺序的去重里该缺点毫无影响。实现思路:给传入数组排序,排序后相同值相邻,然后遍历时新数组只加入不与前一值重复的值。

     1 // 将相同的值相邻,然后遍历去除重复值
     2 function unique4(array){
     3   array.sort(); 
     4   var re=[array[0]];
     5   for(var i = 1; i < array.length; i++){
     6     if( array[i] !== re[re.length-1])
     7     {
     8       re.push(array[i]);
     9     }
    10   }
    11   return re;
    12 }

    优化遍历数组法

    该方法的实现代码相当酷炫;实现思路:获取没重复的最右一值放入新数组。(检测到有重复值时终止当前循环同时进入顶层循环的下一轮判断)

    // 思路:获取没重复的最右一值放入新数组
    function unique5(array){
      var r = [];
      for(var i = 0, l = array.length; i < l; i++) {
        for(var j = i + 1; j < l; j++)
          if (array[i] === array[j]) j = ++i;
        r.push(array[i]);
      }
      return r;
    }
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    POJ 3114 Tarjan+Dijkstra
    278. First Bad Version
    209. Minimum Size Subarray Sum
    154. Find Minimum in Rotated Sorted Array II
    153. Find Minimum in Rotated Sorted Array
    710. Random Pick with Blacklist
    767. Reorganize String
    524. Longest Word in Dictionary through Deleting
    349. Intersection of Two Arrays
    350. Intersection of Two Arrays II
  • 原文地址:https://www.cnblogs.com/huazhenghao/p/5284183.html
Copyright © 2011-2022 走看看