C ++ STL Deque搜索:太慢了?

时间:2015-11-05 12:33:32

标签: c++ stl deque function-call

我目前正在参加有关竞争性课程的课程。我遇到了一个函数调用问题,其中一个任务要求我在双端队列中找到一个值。不幸的是,我当前的实现具有时间复杂度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)错误。请帮忙,谢谢!

1 个答案:

答案 0 :(得分:2)

如果内容已排序,您可以使用二分搜索:http://en.cppreference.com/w/cpp/algorithm/binary_search
在地图上更改双端队列:http://www.cplusplus.com/reference/map/map/find/(对数大小。)