zoukankan      html  css  js  c++  java
  • 寻找出现次数最多的数据

    见编程之美

    在一堆数里随便拿一个数,再找一个与它不相等的,然后一起扔掉,这样问题规模不断缩小,最终等到找不到一个不相等的数时,就成功 了。但要简化算法,就不能每拿一个数就统统找一遍。可以考虑准备一个队列,队列里放着暂时扔不掉的数。如从头开始,将a[0]放入队列,再看a[1],如 果a[0] != a[1],则扔掉a[1]和a[0],a[0]从队列取出;如果a[0] == a[1],则a[1]入队列,然后a[2]进行相同的操作,以此类推。

     1 int FindMaxcountNum(const int* pArr, const size_t size) 
     2 {
     3     int nValue;
     4     int count = 0;
     5     for(size_t i = 0; i < size; i++) 
     6     {
     7         if (count == 0) 
     8         {
     9             nValue = pArr[i];
    10             count = 1;
    11         }
    12         else 
    13         {
    14             nValue == pArr[i] ? count++ : count--;
    15         }
    16     }
    17     return nValue;
    18 }
  • 相关阅读:
    欧拉法求乘率
    利用连分数求乘率
    反乘率
    乘率
    别害怕暂时的迷茫
    别害怕心中的理想
    HDU6072 Logical Chain
    P3345 [ZJOI2015]幻想乡战略游戏
    P4449 于神之怒加强版
    [笔记] 拉格朗日插值法
  • 原文地址:https://www.cnblogs.com/dsky/p/2528595.html
Copyright © 2011-2022 走看看