【发布时间】:2020-05-23 12:46:26
【问题描述】:
我正在解决一个在数组中查找唯一元素的简单问题。我使用std::unordered_map 来计算唯一元素,但它在一个测试用例中给出了 Time Limit Exceeded。然后我使用了std::unordered_set,结果相同。
PS:我使用了std::unordered_map 和std::unordered_set,因为我读到这两个分别比std::map 和std::set 快得多。
#include<bits/stdc++.h>
using namespace std;
int main() {
int n, a;
cin >> n;
unordered_set<int> s;
for(int i = 0; i < n; i++) {
cin >> a;
s.insert(a);
}
cout << s.size();
}
测试 7 超过了时间限制。
我的问题是:
如果 std::unordered_map 和 std::unordered_set 更快,为什么他们要提供 TLE?
【问题讨论】:
-
n 和 a 的界限是什么?
-
std::unordered_map和utd::unordered_set并不是天生就更快。编程中没有什么只是“神奇的速度”。您必须知道如何以及何时使用什么。 -
您可以先尝试分配内存,这可能会提高您的代码速度
-
在您的示例中,任何容器都将比您等待的用户输入快得多。
标签: c++ unordered-map stdmap unordered-set stdset