zoukankan      html  css  js  c++  java
  • bzoj千题计划171:bzoj2456: mode

    http://www.lydsy.com/JudgeOnline/problem.php?id=2456

    任意删除序列中两个不同的数,众数仍然是众数

    不停的删,剩下的最后的数一定是众数

    具体实现:

    记录一个当前数和出现次数

    如果下一个数和当前数不相等,出现次数-1

    当出现次数变为0时,当前数换为下一个数

    #include<cstdio>
    int main()
    {
        int n,sum=0,x,last;
        scanf("%d",&n);
        while(n--)
        {
            scanf("%d",&x);
            if(x==last) sum++;
            else
            {
                sum--;
                if(sum<=0) { sum++; last=x; }
            } 
        }
        printf("%d",last);
    }

    2456: mode

    Time Limit: 1 Sec  Memory Limit: 1 MB
    Submit: 6273  Solved: 2510
    [Submit][Status][Discuss]

    Description

    给你一个n个数的数列,其中某个数出现了超过n div 2次即众数,请你找出那个数。

    Input

    第1行一个正整数n。
    第2行n个正整数用空格隔开。

    Output

        一行一个正整数表示那个众数。

    Sample Input

    5
    3 2 3 1 3

    Sample Output

    3

    HINT

    100%的数据,n<=500000,数列中每个数<=maxlongint。

  • 相关阅读:
    Tomcat启动流程简析
    Tomcat的启停脚本源码解析
    Servlet规范
    CCNA
    CCNA-Part 6
    MYSQL 使用基础
    CCNA-Part5
    CCNA-Part4 -网络层
    MySQL 字符串索引优化方案
    CCNA-Part3
  • 原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/8157069.html
Copyright © 2011-2022 走看看