スライディング ウィンドウ手法は、さまざまな問題、特に並べ替えられた配列に関係する問題の解決に効果的に適用できる強力なアルゴリズム アプローチです。私はスライディング ウィンドウのサプライヤーとして、この技術が複雑な問題をいかに単純化し、効率を向上させるかを直接目撃してきました。このブログでは、ソートされた配列の問題にスライディング ウィンドウを使用する方法を詳しく説明し、実践的な例と洞察を提供します。
スライディング ウィンドウ手法を理解する
スライディング ウィンドウ手法では、配列内をスライドする特定のサイズのウィンドウを作成します。このウィンドウは問題の要件に基づいて調整でき、サブ配列またはデータのサブセットを効率的に処理するのに役立ちます。ソートされた配列にスライディング ウィンドウを使用する主な利点は、配列のソートされた性質を利用して、解の時間の複雑さを軽減できることです。
簡単な例から始めましょう。ソートされた整数の配列があり、指定されたサイズ k の部分配列の最大合計を見つけたいとします。
def max_sum_subarray(arr, k): n = len(arr) if n < k: return None window_sum = sum(arr[:k]) max_sum = window_sum for i in range(k, n): window_sum = window_sum - arr[i - k] + arr[i] max_sum = max(max_sum, window_sum) return max_sum
このコードでは、最初に最初の k 要素の合計を計算してウィンドウを初期化します。次に、ウィンドウが配列内をスライドするときに、ウィンドウの外に出る要素を減算し、ウィンドウに入る新しい要素を追加します。このようにして、部分配列全体の合計を毎回再計算することを回避します。単純に実行すると、時間計算量は O(nk) になります。代わりに、スライディング ウィンドウのアプローチにより、時間の複雑さが O(n) に軽減されます。
ソートされた配列の問題のアプリケーション
1. 与えられた合計を持つペアを見つける
ソートされた配列と目標合計が与えられた場合、スライディング ウィンドウ手法を使用して、合計が目標合計に達する要素のすべてのペアを見つけることができます。
def find_pairs_with_sum(arr, target): left, right = 0, len(arr) - 1pairs = [] while left < right: current_sum = arr[left] + arr[right] if current_sum == target:pairs.append((arr[left], arr[right])) left += 1 right -= 1 elif current_sum < target: left += 1 else: right -= 1 ペアを返します
この例では、ソートされた配列の先頭と末尾で 2 つのポインター (スライディング ウィンドウの形式) を使用します。ポインターの要素の合計がターゲットと等しい場合、そのペアを結果に追加し、両方のポインターを移動します。合計がターゲットより小さい場合は、左ポインタを移動して合計を増やし、それが大きい場合は、右ポインタを移動して合計を減らします。
2. 所定の平均を持つサブ配列
特定の平均を持つ、ソートされた配列内の特定のサイズのすべてのサブ配列を見つけたいとします。まず、平均に部分配列のサイズを乗算して目標の合計を取得することで、平均の問題を合計の問題に変換できます。
def subarrays_with_given_average(arr, k, avg): target_sum = k * avg n = len(arr) if n < k: return [] window_sum = sum(arr[:k]) result = [] if window_sum == target_sum: result.append(arr[:k]) for i in range(k, n): window_sum = window_sum - arr[i - k] + arr[i] window_sum == target_sumの場合: result.append(arr[i - k + 1:i + 1]) 結果を返します
当社の引き違い窓製品
引き違い窓のサプライヤーとして、当社はさまざまな用途に適した高品質の引き違い窓を幅広く提供しています。たとえば、次のようなものを探している場合ポーチ用ビニール引き違い窓、当社の製品は耐久性と美しさを提供するように設計されています。これらの窓は、さまざまな気象条件に耐えられる高品質のビニール素材で作られています。
スライディング窓のプライバシーと光の制御を強化したい場合は、引き違い窓用ブラインド素晴らしい選択です。インテリアに合わせてさまざまなスタイルと色を取り揃えています。
平和と静けさを大切にする人のために、40dB防音引き違い窓外部の騒音を大幅に低減するように設計されています。これらの窓は、交通量の多い通りや騒々しい地域の近くにある家に最適です。


調達に関するお問い合わせ
当社のスライディング ウィンドウ製品にご興味がある場合、または並べ替えられた配列の問題に対するスライディング ウィンドウ手法に関するご質問がある場合は、お問い合わせいただくことをお勧めします。当社の専門家チームは、お客様のニーズに最適なソリューションを見つけるお手伝いをいたします。アルゴリズムに関するアドバイスを求めている開発者であっても、高品質のスライディング ウィンドウを必要とする顧客であっても、私たちはお手伝いをいたします。
参考文献
- Cormen, TH、Leiserson, CE、Rivest, RL、および Stein, C. (2009)。アルゴリズムの紹介。プレス付き。
- セジウィック、R.、ウェイン、K. (2011)。アルゴリズム。アディソン - ウェスリーのプロフェッショナル。



