ホームページ > バックエンド開発 > C++ > 2 つの期間が重なっているかどうかを効率的に判断するにはどうすればよいでしょうか?

2 つの期間が重なっているかどうかを効率的に判断するにはどうすればよいでしょうか?

Patricia Arquette
リリース: 2025-01-25 06:57:10
オリジナル
182 人が閲覧しました

How Can We Efficiently Determine if Two Time Periods Overlap?

効率的なアルゴリズム:判断期間の重複

多くのアプリケーションでは、2つの期間が重複するかどうかを判断することが重要です。この記事では、既存の方法の制限を重複させて克服する効率的なアルゴリズムを紹介します。

問題の説明:

開始日と終わりの終わりによって定義される2つの期間を与えます。期間の開始日が別の期間の範囲内で、その逆の場合、重複します。一般的な誤解は、2つの期間の開始日と終わりの終わりが重複している場合、それらが重複していないと考えられていることです(たとえば、[0、10]および[10、20])。

非効率的な方法:

一部の方法では、複数の条件ステートメントを使用してオーバーラップを確認します。この方法は効果的ですが、繰り返し検査と論理的な複雑さにより効率が低くなります。 効率的なアルゴリズム:

より効果的な解決策は、1つの期間の開始日が別の期間の終わりの終わりよりも少ないかどうかを直接確認するための簡単な条件であり、その逆も同様です。これは次のように言うことができます:

例:

テスト期間[5、12]と[8、15]の間でオーバーラップすると、アルゴリズムは次の条件を評価します。

overlap =(5< 15)&&(8< 12)
<code>bool overlap = (a.start < b.end) && (b.start < a.end);</code>
ログイン後にコピー

両方の条件が真であるため、出力は真であり、これらの2つの期間が重複していることを示します。 時間の複雑さ:

アルゴリズムの時間の複雑さは、1つの比較のみが含まれるため、一定です。これにより、多くの期間であっても、オーバーラップを迅速かつ効果的に検出できることが保証されます。

結論:

この高効率アルゴリズムは、以前に提案された方法よりも優れているシンプルで効率的な方法でオーバーラップ期間を正確に検出できます。これは、時間のスケジューリングと分析に役立つ貴重なツールです。

以上が2 つの期間が重なっているかどうかを効率的に判断するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート