Hash的应用:

Hash即散列,不像数据结构与算法中讲的各种Hash方法和冲突处理等过多的阐述,以下主要介绍Hash在机试试题解答中的作用。

例2.5 统计同成绩学生人数

Hash解法AC代码:(一般想到的也是这种解法)

  1. #include<cstring>
  2. #include<iostream>
  3. using namespace std;
  4.  
  5. int grade[];
  6.  
  7. int main()
  8. {
  9. int n, m, index;
  10. memset(grade, , sizeof(grade));
  11. while (cin >> n)
  12. {
  13. for (int i = ; i < n; i++)
  14. {
  15. cin >> m;
  16. grade[m]++;
  17. }
  18. cin >> index;
  19. cout << grade[index] << endl;
  20. }
  21. return ;
  22. }

例2.6 Sort

时间限制:1 秒 内存限制:128 兆

题目描述:

给你n个整数,请按从大到小的顺序输出其中前m大的数。

输入:

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

输出:

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

样例输入:

  1. - -

样例输出:

AC代码:

  1. #include<cstring>
  2. #include<iostream>
  3.  
  4. using namespace std;
  5.  
  6. int num[];
  7. const int UPSET = ;
  8. const int DOWNSET = -;
  9.  
  10. int main()
  11. {
  12. int n, m, x;
  13. memset(num, , sizeof(num));
  14. while (cin >> n >> m)
  15. {
  16. for (int i = ; i < n; i++)
  17. {
  18. cin >> x;
  19. num[x+ UPSET]++;
  20. }
  21. for (int i = UPSET; i >= DOWNSET; i--)
  22. {
  23. if (num[i + UPSET] == )
  24. {
  25. cout << i;
  26. m--;
  27. if (m != )cout << " ";
  28. else
  29. {
  30. cout << endl;
  31. break;
  32. }
  33. }
  34. }
  35. }
  36. return ;
  37. }
  1. #include<cstdio>
  2. #include<cstring>
  3. #include<iostream>
  4. #include<algorithm>
  5.  
  6. using namespace std;
  7. int a[];
  8.  
  9. bool cmp(int a,int b)
  10. {
  11. return a > b;
  12. }
  13.  
  14. int main()
  15. {
  16. int n, m;
  17. while (scanf("%d%d", &n, &m) != EOF)
  18. {
  19. for (int i = ; i < n; i++)scanf("%d", &a[i]);
  20. sort(a, a + n, cmp);
  21. for (int i = ; i < m - ; i++)printf("%d ", a[i]);
  22. printf("%d\n", a[m-]);
  23. }
  24. //system("pause");
  25. return ;
  26. }

二刷

机试指南第二章-经典入门-Hash的应用自解的更多相关文章

  1. 王道机试指南题解(C/C++版)

    第 2 章 经典入门 一 排序 例 2.1 排序 代码 2.1 冒泡排序(时间复杂度 \(O(n^2)\)) #include <iostream> using std::cin; usi ...

  2. Knockout应用开发指南 第二章:监控属性(Observables)

    原文:Knockout应用开发指南 第二章:监控属性(Observables) 关于Knockout的3个重要概念(Observables,DependentObservables,Observabl ...

  3. 第二章 NIO入门

    传统的同步阻塞式I/O编程 基于NIO的非阻塞编程 基于NIO2.0的异步非阻塞(AIO)编程 为什么要使用NIO编程 为什么选择Netty 第二章 NIO 入门 2.1 传统的BIO编程 2.1.1 ...

  4. 第二章Python入门

    第二章 Python入门 2.1.简介 Python是著名的"龟叔"(Guido van Rossum)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言 Pytho ...

  5. 第二章 MySQL入门篇

    第一章 MySQL入门篇 一.MySql简介 简言: 和SQL Server数据库相同,MySQl也是一个关系型数据库管理系统.由瑞典的MySQL AB公司开发,2008年被SUN公司收购,2009年 ...

  6. Javascript权威指南——第二章词法结构,第三章类型、值和变量,第四章表达式和运算符,第五章语句

    第二章 词法结构 一.HTML并不区分大小写(尽管XHTML区分大小写),而javascript区分大小写:在HTML中,这些标签和属性名可以使用大写也可以使用小写,而在javascript中必须小写 ...

  7. Spring学习指南-第二章-Spring框架基础(完)

    第二章 Spring框架基础 面向接口编程的设计方法 ​ 在上一章中,我们看到了一个依赖于其他类的POJO类包含了对其依赖项的具体类的引用.例如,FixedDepositController 类包含 ...

  8. (基础篇 走进javaNIO)第二章-NIO入门

    在本章巾,我们会分别对 JDK 的BIO ,NIO 和JDK 1.7 最新提供的 NI02.0的使用进行详细说明 ,通过流程图和代 码讲解,让大 家体会到随着 Ja va 1/0 类库的 不断发展和改 ...

  9. JavaScript权威指南 第二章 词法结构

    这章主要把保留字说一下 JavaScript 把一些标识符拿出来用做自己的关键字.因此,就不能再在程序中把这些关键字用做标识符了: break delete function return typeo ...

随机推荐

  1. 为什么需要 Redis 哨兵?

    在说哨兵之前,我们先说下主从复制,Redis 的主从复制模式,一旦主节点出现故障无法提供服务,需要人工介入手工将从节点调整为主节点,同时应用端还需要修改新的主节点地址,这种故障转移的方式对于很多应用场 ...

  2. JQuery系列(2) - 事件处理

    JQuery事件绑定 (1)on方法 on方法是jQuery事件绑定的统一接口.后面介绍的事件绑定的那些简便方法,其实都是on方法的简写形式. $('li').on('click', function ...

  3. axure快速上手

    Axure RP是一个专业的快速原型设计工具.Axure(发音:Ack-sure),代表美国Axure公司:RP则是Rapid Prototyping(快速原型)的缩写.Axure RP是美国Axur ...

  4. linux中添加自定义命令

    centos下设置alias别名,比较简单,例如: vim /root/.bashrc addalias rm='rm -i' Linux alias设置指令的别名命令详解 功能说明:设置指令的别名. ...

  5. MAT022 Foundations of Statistics

    MAT022 Foundations of Statistics and Data Science Summative Assessment 2019/20MAT022 Foundations of ...

  6. postgres linux系统下连接方法

    psql -U 用户名 -h ip  -p 端口号 -w 库名称 查询实例下的数据结构 语法:select 字段名  from  实例名“.”表名(account.tb_user) 如:  selec ...

  7. php生成pdf,php+tcpdf生成pdf, php pdf插件

    插件例子:https://tcpdf.org/examples/ 下载tcpdf插件: demo // Include the main TCPDF library (search for insta ...

  8. Tensorflow细节-P309-高维向量可视化

    import matplotlib.pyplot as plt import tensorflow as tf import numpy as np import os from tensorflow ...

  9. 洛谷 P3469 [POI2008]BLO-Blockade 题解

    一道经典的割点例题,用size数组记录该子树有多少个节点,sum是这棵搜索树上有多少个节点,sum*(n-sum-1)是将点删掉后的数对数量. #include<iostream> #in ...

  10. BZOJ 4103: [Thu Summer Camp 2015]异或运算 可持久化trie

    开始想了一个二分+可持久化trie验证,比正解多一个 log 仔细思考,你发现你可以直接按位枚举,然后在可持久化 trie 上二分就好了. code: #include <bits/stdc++ ...