効率的なアルゴリズム:判断期間の重複
多くのアプリケーションでは、2つの期間が重複するかどうかを判断することが重要です。この記事では、既存の方法の制限を重複させて克服する効率的なアルゴリズムを紹介します。
問題の説明:
開始日と終わりの終わりによって定義される2つの期間を与えます。期間の開始日が別の期間の範囲内で、その逆の場合、重複します。一般的な誤解は、2つの期間の開始日と終わりの終わりが重複している場合、それらが重複していないと考えられていることです(たとえば、[0、10]および[10、20])。
非効率的な方法:
一部の方法では、複数の条件ステートメントを使用してオーバーラップを確認します。この方法は効果的ですが、繰り返し検査と論理的な複雑さにより効率が低くなります。 効率的なアルゴリズム:
より効果的な解決策は、1つの期間の開始日が別の期間の終わりの終わりよりも少ないかどうかを直接確認するための簡単な条件であり、その逆も同様です。これは次のように言うことができます:
例:
テスト期間[5、12]と[8、15]の間でオーバーラップすると、アルゴリズムは次の条件を評価します。
overlap =(5&lt; 15)&&(8&lt; 12)<code>bool overlap = (a.start < b.end) && (b.start < a.end);</code>
両方の条件が真であるため、出力は真であり、これらの2つの期間が重複していることを示します。 時間の複雑さ:
アルゴリズムの時間の複雑さは、1つの比較のみが含まれるため、一定です。これにより、多くの期間であっても、オーバーラップを迅速かつ効果的に検出できることが保証されます。
結論:
この高効率アルゴリズムは、以前に提案された方法よりも優れているシンプルで効率的な方法でオーバーラップ期間を正確に検出できます。これは、時間のスケジューリングと分析に役立つ貴重なツールです。
以上が2 つの期間が重なっているかどうかを効率的に判断するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。