使用Hash思想,实现输出n个整数的前m大的所有数

题目:使用Hash思想,实现输出n个整数的前n1大的所有数

输入要求:第一行输入n,n1(n,n1都要求大于-500000小于500000),第二行包含n个互不相同,且处于-500000~500000之间,第三行输出结果

输入样例:5 ,3
    -3 44 11 -55 33
样例输出:44 33

实现代码:
#include <iostream>
#define MAXNUM 500000 
int a[1000000];
using namespace std;
int main(int argc, char *argv[])
{
	int n,n1,tmp=2*MAXNUM;
	while(scanf("%d%d",&n,&n1)!=EOF){
		for(int i=0;i<=tmp;i++){
			a[i]=0;
		}
		for(int i=0;i<n;i++){
			int x;
			scanf("%d",&x);
			a[x+MAXNUM]=1;
		}
	 	for(int i=500000;i>=-500000;i--){
	 		if(a[i+MAXNUM]==1){
		 		cout<<i;
		 		n1--;
		 		if(n1!=0) printf(" ");
		 		else{
		 			cout<<endl;
	 				break;
		 		}
	 		}
	 	} 
 	}
	return 0;
}
测试输出:
4
3
33 44 22 99
99 44 33




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值