skyshine725
V2EX  ›  问与答

该如何统计数字出现频率

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