リストとint c
がある場合、リストに2つの要素があるかどうかを調べる必要があります。これはc
(2Sumの問題)です。今、私はソートがO(nはn個のログ)アクションを実行しますので、これは、(nはn個のログ)Oで実行されることが判明この2sumアルゴリズムはどのようにしてO(nlogn)ですか?
def tsum(L,c):
a=sorted(L)
b=sorted(L,reverse=True)
for kleineZahl in a:
for großeZahl in b:
sum=kleineZahl+großeZahl
if sum>c:
continue
elif sum==c:
return(True)
elif sum<c:
break
return(False)
:私は次のアルゴリズムを思い付きました。 "スキャン"は、O(n)アクションを取ると考えられています。どうして?
私は最悪のシナリオがL=[1,1,1,1,1,c,c,c,c,c]
であると考えました。ランタイムはどのようにn/2 * n/2でないのですか?O(n )?
が[8]、L [7]とL [6] Lと[0]、私はそれらとL [1]をチェックする必要はありません、とにかくCよりも大きくなるでしょう、私は正しいのですか? –
@ JustinP:実際に小切手を保存する場所では、右端から特定の位置まで走る必要はありません。 * O(n^2)*係数を保存する前回の検索を終了した場所から開始することができます。 –