给你n个整数,请按从大到小的顺序输出其中前m大的数。
5 3 3 -35 92 213 -644
213 92 3
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int num[1000010];// 0-499999 是负数 500001-1000000是正数 500000是0
int main()
{
int n,m,t,i;
while(scanf("%d %d",&n,&m)!=EOF)
{
memset(num,0,sizeof(num));
for(i=0;i<n;i++)
{
scanf("%d",&t);
num[t+500000]++;
}
for(i=1000000;i>=0&&m;i--)
{
if(num[i])
{
printf("%d",i-500000);
m-=1;
if(m)
printf(" ");
}
}
printf("\n");
}
return 0;
}
| Status | Accepted |
|---|---|
| Time | 764ms |
| Memory | 5484kB |
| Length | 460 |
| Lang | G++ |
| Submitted | 2017-04-10 20:43:37 |
本文介绍了如何利用哈希算法高效地解决找出数组中前M大元素的问题。通过排序和数组下标的操作,实现快速查找,降低了时间复杂度。
8万+

被折叠的 条评论
为什么被折叠?



