• BZOJ-2456: mode (神题)


    2456: mode

    Time Limit: 1 Sec  Memory Limit: 1 MB
    Submit: 5768  Solved: 2361
    [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。



    zju2132 The Most Frequent Number

    Source

    鸣谢 黄祎程

    神题 hzwer Orz

    把每个数和一个与它不同的数相抵消,由于要求的数出现了超过n/2次,那么最后剩下的就是答案

     1 #include "stdio.h"
     2 using namespace std;
     3 int i,n,a,x=0,y=0;
     4 int main(){
     5     freopen ("mode.in","r",stdin);freopen ("mode.out","w",stdout);
     6     scanf("%d",&n);
     7     for (i=1;i<=n;i++){
     8         scanf("%d",&a);
     9         if (y!=a){
    10             if (x==0) {x=1,y=a;}
    11             else x--;
    12         }
    13         else x++;
    14     }
    15     printf("%d",y);
    16     return 0;
    17 }
    未来是什么样,未来会发生什么,谁也不知道。 但是我知道, 起码从今天开始努力, 肯定比从明天开始努力, 要快一天实现梦想。 千里之行,始于足下! ——《那年那兔那些事儿》
  • 相关阅读:
    python-列表基本方法
    成员/身份运算
    python-字符串常用方法
    python基础知识1
    jmeter_性能测试及报告分析
    Day3_linux_工作目录切换命令
    Day2_linux_查看系统状态
    Day1_liunx_常用系统工作命令
    互联网是有记忆的
    第3章 Python基础
  • 原文地址:https://www.cnblogs.com/keximeiruguo/p/7719876.html
Copyright © 2020-2023  润新知