V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
skyshine725
V2EX  ›  问与答

该如何统计数字出现频率

  •  
  •   skyshine725 · 2018-10-26 23:18:21 +08:00 · 1858 次点击
    这是一个创建于 2257 天前的主题,其中的信息可能已经有所发展或是发生改变。
    (1,2,3,4,)
    (4,3,2,1)
    (2,3,4,5)
    (5,6,7,8)
    

    有几百组这样的数

    我想计算每一列里出现的次数最少的那个数字。

    没思路。。。

    5 条回复    2018-10-27 08:12:23 +08:00
    lhx2008
        1
    lhx2008  
       2018-10-26 23:56:00 +08:00 via Android   ❤️ 1
    几百组很快,给每一列开个 map 统计下就好
    limuyan44
        2
    limuyan44  
       2018-10-27 00:26:34 +08:00 via Android
    只有几百个连特殊算法都不要,直接算
    zzj0311
        3
    zzj0311  
       2018-10-27 00:32:36 +08:00 via Android
    几百硬算就是了,几百万才要考虑怎么做~
    autoxbc
        4
    autoxbc  
       2018-10-27 02:30:48 +08:00
    ```js
    const numCount = 4 ;
    const setCount = 1000*1000 ;

    const randomNum = () => Math.floor( Math.random()*10 );
    const randomSet = () => Array(numCount).fill().map(randomNum);
    const allData = Array(setCount).fill().map(randomSet);

    console.time('t1');

    const rslt = Array(numCount).fill().map( () => new Map() );
    allData.forEach( set => {
    set.forEach( (num,idx) => {
    const map = rslt[idx];
    const count = map.get(num) ? map.get(num) : 0 ;
    map.set( num , count+1 );
    } );
    } );

    console.timeEnd('t1');
    console.log( rslt.map( map => [...map].map( e => e.join() ) ) );
    ```

    一百万组数据耗时 1748 ms,CPU: i3 3220T
    pipapa
        5
    pipapa  
       2018-10-27 08:12:23 +08:00 via Android
    Trie 加上堆排序怎么样?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1059 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:42 · PVG 03:42 · LAX 11:42 · JFK 14:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.