[九度][何海涛] 最小的K个数
- 题目描述:
-
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
- 输入:
-
每个测试案例包括2行:
第一行为2个整数n,k(1<=n,k<=200000),表示数组的长度。
第二行包含n个整数,表示这n个数,数组中的数的范围是[0,1000 000 000]。
- 输出:
-
对应每个测试案例,输出最小的k个数,并按从小到大顺序打印。
- 样例输入:
-
8 4 4 5 1 6 2 7 3 8
- 样例输出:
-
1 2 3 4 可以用一个K大小的最大队来做,当堆的个数<K时放入,否则当堆的根大于当前数,弹出堆的根,插入当前数。另外一种就是用partition来找第K大数,这样它前面的保证都是比它小的,所以K个数就找到了。
1 #include <iostream> 2 #include <vector> 3 #include <cstdio> 4 #include <queue> 5 using namespace std; 6 7 void print(priority_queue<int, vector<int>, less<int> > &maxHeap) 8 { 9 if (maxHeap.empty()) 10 return; 11 12 int element = maxHeap.top(); 13 maxHeap.pop(); 14 bool status = maxHeap.empty(); 15 16 print(maxHeap); 17 18 if (status) 19 printf("%d", element); 20 else 21 printf(" %d", element); 22 } 23 24 int main() 25 { 26 int n, k; 27 28 while(scanf("%d%d", &n, &k) != EOF) 29 { 30 priority_queue<int, vector<int>, less<int> > maxHeap; 31 32 int num; 33 for(int i = 0; i < n; i++) 34 { 35 scanf("%d", &num); 36 if (maxHeap.size() < k) 37 maxHeap.push(num); 38 else 39 { 40 if (maxHeap.top() > num) 41 { 42 maxHeap.pop(); 43 maxHeap.push(num); 44 } 45 } 46 } 47 48 print(maxHeap); 49 printf("\n"); 50 } 51 }
#include <iostream> #include <ctime> #include <algorithm> #include <cstdio> using namespace std;void partition(int a[], int left, int right, int k) {int randNum = left + (rand() % (right - left + 1));int t = a[randNum];a[randNum] = a[left];a[left] = t;int i = left;int j = right;int key = a[left];while(i <= j){if (a[i] <= key)i++;else{int t = a[j];a[j] = a[i];a[i] = t;j--;}}a[left] = a[j];a[j] = key;if (j == k)return;else if (j > k)return partition(a, left, j - 1, k);elsereturn partition(a, j + 1, right, k); }int main() {int n, k;int a[200000];while(scanf("%d%d", &n, &k) != EOF){for(int i = 0; i < n; i++)scanf("%d", &a[i]);srand(time(NULL));partition(a, 0, n - 1, k - 1);sort(a, a + k);for(int i = 0; i < k; i++)if (i == 0)printf("%d", a[i]);elseprintf(" %d", a[i]);printf("\n");} }
[九度][何海涛] 最小的K个数相关推荐
- 九度 1371 最小的K个数
题目描述:输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 输入: 每个测试案例包括2行:第一行为2个整数n,k(1<= ...
- 在哪里能收到python实例代码-Python找出最小的K个数实例代码
题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 这个题目完成的思路有很多,很多排序算法都可以完成既定操作,关键是复 ...
- 面试题整理10 最小的k个数
<剑指offer>面试题30: 题目:输入n个整数,找出其中最小的k个数.例如输入4.5.1.6.2.7.3.8这8个数字,则最小的4个数字是1.2.3.4. 分析:求数组的第k小,如果能 ...
- C#刷剑指Offer | 【常考题】最小的k个数
[C#刷题]| 作者 / Edison Zhou 这是EdisonTalk的第299篇学习分享 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目) ...
- 剑指offer面试题40. 最小的k个数(sort函数)
题目描述 输入整数数组 arr ,找出其中最小的 k 个数.例如,输入4.5.1.6.2.7.3.8这8个数字,则最小的4个数字是1.2.3.4. 思路 详见链接 代码 class Solution: ...
- [剑指 offer]--大顶堆 ➕ 快速选择 --面试题40. 最小的k个数
1 题目描述 输入整数数组 arr ,找出其中最小的 k 个数.例如,输入4.5.1.6.2.7.3.8这8个数字,则最小的4个数字是1.2.3.4. 示例 1: 输入:arr = [3,2,1], ...
- 程序员编程艺术:第三章、寻找最小的k个数
程序员编程艺术:第三章.寻找最小的k个数 作者:July. 时间:二零一一年四月二十八日. 致谢:litaoye, strugglever,yansha,luuillu,Sorehead,及狂想曲创作 ...
- 最小的k个数(第k小的数)
1. 利用快排的思想,由于每次只选择左右部分中的一部分,因此时间复杂度为O(n). # -*- coding:utf-8 -*- class Solution:# (O(n)复杂度)def GetLe ...
- 46最小的k个数 47寻找第k大
46 最小的k个数 第一反应排序的话是O(nlogn),暴力是O(NK),看了题解用优先队列,因为优先队列插入元素需要logn,我们只要让堆的大小控制在k,插入一个元素就值需要logk,这样整体的时间 ...
- 伍六七带你学算法 入门篇-最小的k个数
java面试题-最小的k个数 难度-简单 输入整数数组 arr ,找出其中最小的 k 个数.例如,输入4.5.1.6.2.7.3.8这8个数字,则最小的4个数字是1.2.3.4. 示例 1: 输入:a ...
最新文章
- 2017-2-19 C#基础 基本数据类型的转换,转义字符,常量
- 新手向:从不同的角度来详细分析Redis
- 学长毕业日记 :本科毕业论文写成博士论文的神操作20170328
- PyCharm中配置与PyQT5相关的External tools
- 最好用最方便的sqlite管理工具
- ant如何形成时间轴和图库_如何让景观设计更具有逻辑性?
- JQuery使用总结
- 编译的警告:隐式声明与内建函数 ‘malloc’ 不兼容
- 百度文库下载工具(引言及使用教程)
- JMeter使用实践之造数据
- matlab胡良剑第五章,matlab数学实验第一至第四章答案(胡良剑)
- C# 读取网卡、设置网上、自动连接Wifi
- 为什么变量命名不建议用汉语拼音
- 文件被占用删除不了?快来我给你一招解决!
- HA架构中的脑裂,什么是脑裂,怎样预防脑裂?
- finalize方法的使用
- 祖玛游戏python
- python切面异常处理_node端统一错误处理
- thinkpad x61-lg2装XP
- rnss和rdss的应用_浅谈北斗二代RDSS和RNSS组合技术.doc
热门文章
- (转)首个比特币投资基金在加拿大获批上线!
- 因云而生,阿里云全面进入云原生时代
- 【优化预测】基于matlab布谷鸟搜索算法优化SVM预测【含Matlab源码 1525期】
- 【基础教程】基于matlab图像去噪总结【含Matlab源码 1274期】
- 【TWVRP】基于matalb模拟退火算法求解带时间窗的车辆路径规划问题【含Matlab源码 160期】
- 思维导图ubuntu_Ubuntu——思维导图导安装和configuration area错误
- karma看fits文件软件操作汇总【第三个维度的变化】【查看某个范围的RMS值】
- 2021/4/2听宫老师演讲有感。
- 解决pip install 库 下载速度慢的问题
- 2008服务器系统安装哪个版本好,Windows Server 2008和Windows Server 2008 R2哪个更好,其中可选的安装版本那个最高级,都有什么用?...