C++ STL Deque 搜索:太慢?
C++ STL Deque search: too slow?
我目前正在学习竞争性编程课程。我遇到了一个函数调用问题,其中一个任务要求我在双端队列中找到一个值。不幸的是,我当前的实现具有时间复杂度 O(N)
,而且速度太慢。
我的代码是这样的:
deque<int>::iterator find(int ref) {
for (deque<int>::iterator it = d.begin(); it != d.end(); ++it) {
if (*it == ref) return it;
}
return d.begin();
}
四处询问后,我发现我需要对数时间复杂度 O(log N)
以避免超出时间限制 (TLE) 错误。请帮忙,谢谢!
如果内容已排序,您可以使用二进制搜索:http://en.cppreference.com/w/cpp/algorithm/binary_search
在地图上更改双端队列:http://www.cplusplus.com/reference/map/map/find/(大小为对数。)
我目前正在学习竞争性编程课程。我遇到了一个函数调用问题,其中一个任务要求我在双端队列中找到一个值。不幸的是,我当前的实现具有时间复杂度 O(N)
,而且速度太慢。
我的代码是这样的:
deque<int>::iterator find(int ref) {
for (deque<int>::iterator it = d.begin(); it != d.end(); ++it) {
if (*it == ref) return it;
}
return d.begin();
}
四处询问后,我发现我需要对数时间复杂度 O(log N)
以避免超出时间限制 (TLE) 错误。请帮忙,谢谢!
如果内容已排序,您可以使用二进制搜索:http://en.cppreference.com/w/cpp/algorithm/binary_search
在地图上更改双端队列:http://www.cplusplus.com/reference/map/map/find/(大小为对数。)