Python アルゴリズムの実装: 最大値およびスライディング ウィンドウ

Python アルゴリズムの実装: 最大値およびスライディング ウィンドウ

最大ウィンドウとスライディング ウィンドウは古典的なアルゴリズムの問​​題です。この記事では、このアルゴリズムを Python で実装する方法と、完全なソース コードを提供する方法を紹介します。

アルゴリズムの説明

整数配列 nums と整数 k を指定すると、配列の左端から右端に移動するサイズ k のスライディング ウィンドウが存在します。ウィンドウには k 個の数字のみが表示されます。毎回、ウィンドウは右に 1 つずつ移動します。私たちの目標は次のとおりです。

  • スライディング ウィンドウの最大値を見つける
  • すべてのスライディング ウィンドウの最大値の合計を計算します。

たとえば、配列 nums = [1,3,-1,-3,5,3,6,7]、k = 3 の場合、[3,3,5,5,6,7] が返され、すべてのスライディング ウィンドウの最大値の合計は 24 になります。

アルゴリズムのアイデア

この問題を解決するには、両端のキューを使用できます。まず、最初の k 要素を両端キューに格納し、それらの最大値を見つけます。次に、k 番目の要素から開始して反復し、各反復ステップで次のことを実行します。

  • キューに k 個の要素だけが残るまで、キューの左側の要素を削除します。
  • 現在の要素をキューの右側に追加します
  • 現在キュー内にある最大値を見つけて出力配列に追加します。

最後に、出力配列の合計を計算します。

Pythonコードの実装

以下は完全な Python コード実装です。

from collections import deque

def max_sum_sliding_window(nums, k):
    n = len(nums)
    if n * k == 0:
        return []
    if k == 1:
        return nums
    
    # 初始化双端队列
    dq = deque()
    for i in range(k):
        while 

おすすめ

転載: blog.csdn.net/update7/article/details/131842997