标签:一个 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;
}
标签:一个 out idt alt arch names tor 时间复杂度 turn
原文地址:https://www.cnblogs.com/houchen/p/9146149.html