其实快排也可以通过这个问题~不是考点
没想到考点是这个,简单hash应用,空间换时间
初始化一个长度为1000001的数组(由于数字的范围为[-500000,500000])
如果存在这个数m,数组下标为m的加一
数组从1000000倒计,值为1的输出
很无奈~直接贴别人代码
#include<iostream> int hash[1000001]; int main(){ int n,m,temp,cnt; while(scanf("%d%d",&n,&m)!=EOF){ memset(hash,0,sizeof(hash)); for(int i=0;i<n;i++){ scanf("%d",&temp); hash[temp+500000]=1; } cnt=0; for(int i=1000000;i>=0;i--){ if(hash[i]==1){ if(cnt==m-1){ printf("%d\n",i-500000); break; } printf("%d ",i-500000); cnt++; } } } return 0; }
时间: 2024-10-11 12:28:40