• bzoj2456 mode


    2456: mode

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

     
    题解
    好神的题……一开始觉得是裸的hash然后一看内存……然后就去网上膜了题解……
    运用抵消的思想,记录下当前还没被抵消完的值和还没被抵消的次数tot,如果和读入的数相同就tot++否则tot--,最后剩下的就是答案了
    太神了……
     1 /**************************************************************
     2     Problem: 2456
     3     User: 1090900715
     4     Language: Pascal
     5     Result: Accepted
     6     Time:628 ms
     7     Memory:220 kb
     8 ****************************************************************/
     9  
    10 program j01;
    11 var n,t,tot,x:longint;
    12 begin
    13   readln(n);
    14   t:=0;tot:=0;
    15   while n>0 do
    16   begin
    17     dec(n);
    18     read(x);
    19     if tot=0 then
    20     begin
    21       tot:=1;
    22       t:=x;
    23     end;
    24     if x=t then inc(tot) else dec(tot);
    25   end;
    26   writeln(t);
    27 end.
    28 
  • 相关阅读:
    laravel底层源码解析:pipeline,db,console
    composer命令清单
    composer使用笔记
    git常见问题
    JS阻止冒泡和取消默认事件(默认行为)
    vue项目构建:vue-cli+webpack常用配置
    MVC和三层架构
    SSM框架初始配置
    Java对象间的关系
    Spring框架
  • 原文地址:https://www.cnblogs.com/oldjang/p/6159056.html
Copyright © 2020-2023  润新知