HDOJ-ACM1425 sort 简单hash应用

其实快排也可以通过这个问题~不是考点

 

没想到考点是这个,简单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;
}

 

posted on 2016-06-19 00:32  xiezie  阅读(227)  评论(0编辑  收藏  举报

导航