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

HASH的应用(负数下标用偏移量解决)

Input

每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个处于区间[-500000,500000]的整数。

Output

对每组测试数据按从大到小的顺序输出前m大的数。

Sample Input

5 3
3 -35 92 213 -644

Sample Output

213 92 3

解题思路

1 数据量大,使用排序1秒不能解决,因为数字的范围达到百万级 ,时间复杂度达到千万数量级,必须用哈希,

2 哈希针对的是输入数值处于特定范围的问题,建立一个范围大小的数组,建立hash[x] = x出现多少次的映射 

3 对于定义较大容量的数组,放在函数体外,这样用全局变量,内存会比较充足 

4 对于区间为负的,需要设定下标补偿值

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<math.h>
 4 
 5 #define OFFSET 500000
 6 
 7 int Hash[1000001];
 8 
 9 int main()
10 {
11     int n,m;
12     int i;
13     int temp;
14 
15     while( scanf("%d%d",&n,&m)!=EOF){
16         for( i=-500000; i<=500000; i++){
17             //初始化,将每个数字都标记为未出现
18             Hash[i+OFFSET] = 0;
19         }
20         for( i=1; i<=n; i++){
21             scanf("%d",&temp);
22             Hash[temp+OFFSET] += 1;
23         }
24 
25         for( i=500000; i>=-500000; i--){
26             while( Hash[i+OFFSET]){
27                 printf("%d",i);
28                 m--;
29                 Hash[i+OFFSET]--;
30                 if( m ) printf(" ");
31                 else break;
32             }
33             if( m==0 ) break;
34         }
35     }
36 
37     return 0;
38 }

 

转载于:https://www.cnblogs.com/yuxiaoba/p/8430004.html

相关文章:

  • Python 反序列化安全问题(二)
  • collection和collections的区别
  • Eclipse自动补全增强
  • H264 RTP封包原理(转载)
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • Intellij IDEA 热部署处理
  • Angular Material 攻略 03 angular Material Design 安装
  • urllib2 的使用细节(转)
  • 半理解系列--Promise的进化史
  • 游戏引擎大全
  • 【Lv1-Lesson008】A Guide to Birthdays
  • ARM9 S3C2440 定时器中断
  • 可复制的领导力(来自樊登读书会)
  • C++中的const成员函数(函数声明后加const,或称常量成员函数)用法详解
  • 孩子做错事不认错怎么办
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • bearychat的java client
  • HTML中设置input等文本框为不可操作
  • Java|序列化异常StreamCorruptedException的解决方法
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Next.js之基础概念(二)
  • nginx 配置多 域名 + 多 https
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • 当SetTimeout遇到了字符串
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 诡异!React stopPropagation失灵
  • 前端面试之闭包
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #laravel 通过手动安装依赖PHPExcel#
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (二)丶RabbitMQ的六大核心
  • (理论篇)httpmoudle和httphandler一览
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (论文阅读40-45)图像描述1
  • (排序详解之 堆排序)
  • (转)h264中avc和flv数据的解析
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转)使用VMware vSphere标准交换机设置网络连接
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • *** 2003
  • .jks文件(JAVA KeyStore)
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET 指南:抽象化实现的基类
  • .net(C#)中String.Format如何使用
  • @ModelAttribute注解使用
  • [100天算法】-x 的平方根(day 61)
  • [22]. 括号生成
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [Android]使用Git将项目提交到GitHub
  • [C#]无法获取源 https://api.nuge t.org/v3-index存储签名信息解决方法
  • [element-ui] el-dialog 中的内容没有预先加载,因此无法获得内部元素的ref 的解决方案
  • [hdu1561] The more, The Better 【树形DP】