std :: count的复杂性

时间:2016-05-27 21:01:17

标签: c++ stl time-complexity

我在一些在线代码测验网站中,存在一个复杂性限制,即代码在时间和内存中不应超过 O(N),其中 N 是向量A的大小。我的代码完全是(完整代码):

int foo(int X, const std::vector<int> &A) {
    auto N = A.size();
    auto total_hit = std::count(A.cbegin(), A.cend(), X);
    auto K = N - total_hit;
    if (K < 0 || K >= N){
        return -1;
    }
    return K;
}

我得到的结果是我超过了时间复杂度。有没有可能而不是错?

1 个答案:

答案 0 :(得分:9)

根据ref

  

复杂性:完全是最后的 - 谓词的第一次比较/应用

他们错了!

cplusplus同意:

  

复杂性:第一个和最后一个距离的线性:每个元素比较一次。

当然,std::cbegin()std::cend()std::vector::size()的复杂性常数

如果我是你,我会联系该网站,将他们链接到这个问题。