2016-05-27 3 views
6

私はコードが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; 
} 

私は時間の複雑さを超える結果を得ました。彼らが間違っているのではなく、可能性はありますか? refによると

+0

これは完全なコードですか?あるいは、コードが表示されていませんか? – gongzhitaao

+0

フルコード..私はmain関数を書く必要はありません –

+2

このオンラインコードクイズの正確なメッセージ/質問は何ですか?リンクをお願いしますか? –

答えて

9

複雑:まさに最後の - 述語の最初の比較/アプリケーション

彼らは間違っています!

そしてcplusplusは同意する:

複雑を:最初と最後の間の距離のリニア:各要素一度に比較します。もちろん


std::cbegin()std::cend()std::vector::size()の複雑さは、定数です。


私があなただったら、私はこの質問へのリンク、サイトに連絡します。