zoukankan      html  css  js  c++  java
  • 漂亮的代码4:缓存器的妙用

    看到一个去重的问题:

    // Given a list lst and a number N, create a new list that contains each number of lst at most N times without reordering. For example if N = 2, and the input is [1,2,3,1,2,1,2,3], you take [1,2,3,1,2], drop the next [1,2] since this would lead to 1 and 2 being in the result 3 times, and then take 3, which leads to [1,2,3,1,2,3].
    
    deleteNth ([1,1,1,1],2) // return [1,1]
    
    deleteNth ([20,37,20,21],1) // return [20,37,21]
    

    然后自己写的:

    function deleteNth(arr,x) {
      var pairs = {};
      return arr.filter(function(n) {
        if(pairs.hasOwnProperty(n)){
            return ++pairs[n] < x? true:false;
        }else {
            pairs[n] = 1;
            return true;
        }
      });
    }
    

    别人写的:

    function deleteNth(arr,x) {
      var cache = {};
      return arr.filter(function(n) {
        cache[n] = (cache[n]||0) + 1; // ~~cache[n] + 1
        return cache[n] <= x;
      });
    }
    

    自己写成了一堆屎,好好学习。

  • 相关阅读:
    style实例
    背景小实例
    html表单与输入实例
    列表小知识
    表格的使用
    框架的奥秘
    链接那档子事
    判断网络是否连通
    Python3编码规范
    CentOS 7 安装 Docker-Compose
  • 原文地址:https://www.cnblogs.com/htoooth/p/5536984.html
Copyright © 2011-2022 走看看