/*
给你n个整数,请按从大到小的顺序输出其中前m大的数据
数据是[-500000,500000]之间的整数
思路可以进行平移的操作
0~1000000
定义一个整形的数组arr[1000001]并初始化为零,之后将数据出现的个数存入到数组中
*/
#include "iostream"
using namespace std;
int arr[1000001] = {0};//为防止内存的溢出,定义为全局变量
int main()
{
int n = 0,m = 0;
cin>>n>>m;
int num = 0;
//获取n个数据因为数组下标为正数因此需要一定的偏移量
while(n--)
{
cin>>num;
arr[num+500000]++;
}
num = 1000000;
//从后往前推数据,越往前越小
while(m>0)
{
//cout<<num<<" "<<arr[num]<<endl;
while(m>0&&arr[num]--)//这里设置成while可以实现的是n个中有相同数据的输入
{
cout<<(num-500000)<<" ";
m = m-1;
}
num--;
}
return 0;
}
n个整数输出前m大的数据C++--王道机试
最新推荐文章于 2022-10-18 15:15:13 发布