アルゴリズム自体ではなく、実装であるアルゴリズム(最大値と最小値を見つけるため)に問題があります。説明させてください。
n = [0,1,1,2,3,5,8,13,-1,99]
リストが;であるとしましょう。len(n) = 10
次に、globalMin, globalMax = n[0], n[0]
#リストから1回の反復をスキップします
そして今、私がしなければならないのは「ペア」で比較することです。すでにn [0]を使用しているので、n[1]とn[2]の比較を開始して、これら2つの間の最大値と最小値を見つけてから次のように比較します。 yグローバル最小、最大値、次にn[3]とn[4]、nmを私のグローバル値と比較し、次にn[5]とn[6] ..n[9]とn[を比較する必要があるまで10]、ご覧のとおり、n[10]は私のリストに存在しません。次のコードを使用してリストスライスでこれを解決できると思いました。
for i in range(1, len(n), 2):
if n[i:i+1] > n[i+1:i+2]:
minl, maxl = n[i+1:i+2], n[i:i+1] # minl = local min; maxl = local max
else:
maxl, minl = n[i+1:i+2], n[i:i+1]
しかし、これは私の最後の要素が1つしかない場合(上記の例のように)は機能しないため、ご想像のとおり、minまたはmaxがリストの最後の要素である場合は無視されます。私はこれをインデックスまたはリストのスライスで修正しようとしていますが、まったく運がありません、何か提案はありますか?私はこれを「Pythonic」の方法で行う必要があり、インポートを使用せずにこれをできるだけ単純かつ短くするようにします。次の画像に基づくアルゴリズムの残りの部分を理解しました:画像