Luogu P2397 yyy loves Maths VI (mode)___模拟+思维

题目大意:

给出N个数,求他们的众数。

这个众数出现次数超过了一半
一共n个数,而且保证有
n<=2000000
而且每个数<2^31-1

题解:

因为众数>N/2,所以显然我们可以看作为打擂台,相同则累加,不同则抵消,抵消至0则替换,最后必定剩下的是ans

代码:

#include

using namespace std;

int n,x;

int main()
{
    cin>>n;
    int ans=0,sum=0;
    for (int i=1; i<=n; i++)
        {
             cin>>x;
             if (!sum) 
                {
                      ans=x;
                      sum++;
                }
               else {
                         if (ans!=x) sum--;
                                else sum++;
                     }
        }
    cout<

你可能感兴趣的:(暴力/枚举/模拟,C++,规律与思维)