s
这是我正在解决的一个简单问题。它是一个程序,用于检查数组中特定整数的出现次数。数组未排序。
测试应用程序正在向程序提供大小为10000041的输入数组,其中包含100000个查询,并希望在0.1秒内完成执行。
对于上下文,程序需要0.106354秒才能在测试应用程序上以数组大小10000和查询数量10000执行。
我知道SO社区不喜欢这些类型的问题,但是我搜索了我知道的所有资源,但找不到解决方法。
答案 0 :(得分:4)
您需要预先计算每个数字的出现,可以使用map
容器来实现:
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
long long int n;
cin >> n;
int arr[n];
map <int, int> cnt;
for(int i = 0; i < n; i++){
cin >> arr[i];
cnt[arr[i]]++;
}
int q, b;
cin >> q;
for(int j = 0; j < q; j++) //Number of Queries
{
cin >> b;
int count = cnt[b];
if(count == 0)
cout << "NOT PRESENT" << "\n";
else
cout << count << "\n";
}
要进一步优化,您可以使用@Mayur评论中提到的unordered_map
容器。