码迷,mamicode.com
首页 > 其他好文 > 详细

hash 查找

时间:2018-06-06 18:19:41      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:一个   out   idt   alt   arch   names   tor   时间复杂度   turn   

当查找的范围很大(例如n=100000),同时查找的关键数往往不止一个时(m)

若一个个的比较,则时间复杂度达到n*m,导致程序的运行时间大于题目要求的时间。

此时 若题目给出的空间很大时,可以尝试以空间换取时间,采用hash查找。

例子:

技术分享图片

#include <iostream>
#include <vector>;
using namespace std;

int main()
{
 int N;
 cin>>N;
 int i,j;
 int *Score=new int[N];
 for(i=0;i<N;i++)
 {
  cin>>Score[i];
 }
 //利用空间换取时间,用hash 表来存储
 int *all=new int[100000];
 for(i=0;i<100000;i++)
 {
  all[i]=0;
 }
 for(i=0;i<N;i++)
 {
  all[Score[i]]++;
 }
 
 int K;
 cin>>K;
 int *Search=new int[K];
 for(i=0;i<K;i++)
 {
  cin>>Search[i];
 }
 for(i=0;i<K-1;i++)
 {
  cout<<all[Search[i]]<<" ";
 }
 cout<<all[Search[K-1]];
 return 0;
}

 

hash 查找

标签:一个   out   idt   alt   arch   names   tor   时间复杂度   turn   

原文地址:https://www.cnblogs.com/houchen/p/9146149.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!