2017-09-09 8 views
-1

私はコーディネートのためにこの機能を書いており、性能は0、正しさは100%です。なぜ次のロジックのパフォーマンスがゼロですか?

A = [-1, -3] 
B = [1,2,3] 
C = [1,4,5,6,77,2] 

以下の関数は、最小整数を返しますが、存在しないintリストを返します。

def solution(A): 
    temp = 0; 
    tempLst = [] 
    for item in A: 
     temp = temp+1 
     if temp not in A: 
      tempLst.append(temp) 

    return min(tempLst) if tempLst else max(A) + 1 

なぜですか?私が望んでいたのは、ヒープ、itertools、部分的なことなしでそれを行うことでした。

+7

プレーン・イングリッシュで行われるコードは何ですか? – JacobIRR

+0

こんにちは@JacobIRR、私の悪い私は何をしていることになっている機能を追加しました。 –

+0

ええと、私はまだあなたが "それが渡されたintリストを提示していない"ということを知りません。 A、B、Cの結果は1、4、3です。リストにない最小の整数を探しているようですね? – JacobIRR

答えて

0

あなたは効果的にネストされたループを持っています。

for item in A: 

この行は、Aのすべての要素をループします。

if temp not in A: 

...そしてあなたループ再びこれらの要素のそれぞれに対して、 Aの各要素に tempを比較します。

このコードの実行時間は、Aのサイズでは2次です。例えば。 Aに1000要素がある場合、このコードは1000 * 1000 = 1,000,000ステップで終了します。

+0

xrange(min(A)、max(A))を反復処理し、Aに存在するインクリメントされたすべての値を調べることができます。 –

関連する問題