当前位置: 首页 > news >正文

mode(思维,注意内存)

mode
Time Limit:1000MS     Memory Limit:1024KB     64bit IO Format:%lld & %llu
Submit  Status Practice HYSBZ 2456
 

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。

 

题解:

注意这个题,对内存要求非常高1024k,1kb等于1024字节,如果想用数组的话,至少要500000*4/1024大概要2000k,还不算原本程序什么的占的内存;原来我还想着用map记录的,因为想到数据不超过int也呆1e9多,那肯定报内存,现在想想map也会爆内存,怎么办呐,我们只有用数字代替了,因为数字出现的个数会是n的一半还多,那么我们只需要每一步,如果跟上一个相等就++不想等就等于当前,因为ans必然会出现n的一半还多,所以不愁得不到答案了;

代码:

/*
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<vector>
#include<map>
#include<string>
using namespace std;
typedef long long LL;
map<string,int>mp;
int main(){
    char s[20];
    char ans[20];
    int n;
    while(~scanf("%d",&n)){
        mp.clear();
        
        for(int i=0;i<n;i++){
            scanf("%s",s);
            mp[s]++;
            if(mp[s]>n/2)strcpy(ans,s);
        }
        puts(ans);
    }
    return 0;
}
*/
#include<stdio.h>
#include<stdlib.h>
/*
int cmp(const void *a,const void *b){
    return *(int *)a<*(int *)b;
}
int a[500005];
int main(){
    int n;
    while(~scanf("%d",&n)){
        for(int i=0;i<n;i++)scanf("%d",a+i);
        qsort(a,n,sizeof(a[0]),cmp);
        int cur=1,ans;
        for(int i=1;i<n;i++){
            if(a[i]==a[i-1])cur++;
            else{
                if(cur>n/2)ans=a[i-1];
                cur=1;
            }
        }
        if(cur>n/2)ans=a[n-1];
        printf("%d\n",ans);
    }
    return 0;
}
*/
int n,ans,cur,num;
int main(){
    while(~scanf("%d",&n)){
        ans=-1;num=0;
        while(n--){
            scanf("%d",&cur);
            if(cur==ans)num++;
            else{
                num--;
                if(num<0){
                    ans=cur;
                    num=1;
                }
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}

 

相关文章:

  • 给新手的新浪微博 SDK 集成教程【一】
  • GDC2016【全境封锁(Tom Clancy's The Division)】对为何对应Eye Tracked System,以及各种优点的演讲报告...
  • [na]wac无线控制器集中转发部署的几种情况
  • C语言中内存分配问题
  • Nyoj 吝啬的国度(图论双DFS)
  • vim的一些很少用的方法
  • Js 字符串中提取数字
  • 【Linux学习】Linux的文件权限(一)
  • 软件工程学生的编程能力与编程语言是中文或英文有关系吗?
  • WPF下载远程文件,并显示进度条和百分比
  • iptables练习题
  • SQL Server 用链接服务器 同步MySQL
  • 实现app上对csdn的文章查看,以及文章中图片的保存 (制作csdn app 完结篇)
  • Linq动态条件
  • 详解java1.5新添特性------注解
  • 【RocksDB】TransactionDB源码分析
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Android组件 - 收藏集 - 掘金
  • Angular 4.x 动态创建组件
  • Apache Zeppelin在Apache Trafodion上的可视化
  • eclipse的离线汉化
  • JavaScript设计模式之工厂模式
  • JavaScript学习总结——原型
  • java小心机(3)| 浅析finalize()
  • js面向对象
  • OSS Web直传 (文件图片)
  • PHP那些事儿
  • spring + angular 实现导出excel
  • Swoft 源码剖析 - 代码自动更新机制
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 测试如何在敏捷团队中工作?
  • 初识 beanstalkd
  • 给github项目添加CI badge
  • 规范化安全开发 KOA 手脚架
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 深度学习在携程攻略社区的应用
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 使用SAX解析XML
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • RDS-Mysql 物理备份恢复到本地数据库上
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​你们这样子,耽误我的工作进度怎么办?
  • ${ }的特别功能
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (算法)Travel Information Center
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .Net面试题4
  • @Not - Empty-Null-Blank
  • [1525]字符统计2 (哈希)SDUT