skyshine725
V2EX  ›  问与答

该如何统计数字出现频率

  •  
  •   skyshine725 · Oct 26, 2018 · 2464 views
    This topic created in 2801 days ago, the information mentioned may be changed or developed.
    (1,2,3,4,)
    (4,3,2,1)
    (2,3,4,5)
    (5,6,7,8)
    

    有几百组这样的数

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

    没思路。。。

    5 replies    2018-10-27 08:12:23 +08:00
    lhx2008
        1
    lhx2008  
       Oct 26, 2018 via Android   ❤️ 1
    几百组很快,给每一列开个 map 统计下就好
    limuyan44
        2
    limuyan44  
       Oct 27, 2018 via Android
    只有几百个连特殊算法都不要,直接算
    zzj0311
        3
    zzj0311  
       Oct 27, 2018 via Android
    几百硬算就是了,几百万才要考虑怎么做~
    autoxbc
        4
    autoxbc  
       Oct 27, 2018
    ```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  
       Oct 27, 2018 via Android
    Trie 加上堆排序怎么样?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2740 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 80ms · UTC 10:09 · PVG 18:09 · LAX 03:09 · JFK 06:09
    ♥ Do have faith in what you're doing.