[解決済み】2つの範囲が重なっているかどうかをテストする最も効率的な方法は何ですか?
2022-03-27 19:50:52
質問
2つの包含範囲 [x1:x2] と [y1:y2] があり、ここで
x1 ≤ x2
と
y1 ≤ y2
2つの範囲が重なっているかどうかを調べる最も効率的な方法は何でしょうか?
簡単な実装は以下の通りです。
bool testOverlap(int x1, int x2, int y1, int y2) {
return (x1 >= y1 && x1 <= y2) ||
(x2 >= y1 && x2 <= y2) ||
(y1 >= x1 && y1 <= x2) ||
(y2 >= x1 && y2 <= x2);
}
しかし、もっと効率的に計算する方法があると期待しています。
どのような方法が最も少ない演算量で効率的なのでしょうか?
解決方法は?
範囲が重なるとはどういうことでしょうか?両方の範囲に含まれる数Cが存在することを意味します、つまり
x1 <= C <= x2
そして
y1 <= C <= y2
混乱を避けるために、範囲がそうであると考える。 [x1:x2] と [y1:y2] です。
さて、もし範囲が整形式である(x1 <= x2、y1 <= y2)と仮定することが許されるなら、次のテストをすれば十分である。
x1 <= y2 && y1 <= x2
または
(StartA <= EndB)かつ(EndA >= StartB)
関連
-
[解決済み] JavaScriptで数値を文字列に変換するのに最適な方法は何ですか?
-
[解決済み] イコール、エクル、==、==の違いは何ですか?
-
[解決済み] Javaにおける例外処理によるパフォーマンスへの影響とは?
-
[解決済み] πの値を最も早く求める方法は何ですか?
-
[解決済み】Javaで(a != 0 && b != 0)よりも(a*b != 0)の方が速いのはなぜか?
-
[解決済み】pandasでdataframeをループする最も効率的な方法は何ですか?
-
[解決済み】2つの範囲が重なっているかどうかをテストする最も効率的な方法は何ですか?
-
[解決済み】JSFがゲッターを複数回呼び出す理由
-
[解決済み] 与えられた数の除数の数を計算するアルゴリズム
-
[解決済み] TeamViewerはどうしてこんなに速いのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] TypeError: 引数に複数の値が指定されました。
-
[解決済み] 2つの日付範囲が重なっているかどうかを判定する
-
[解決済み】再帰はループより速いことがあるのか?
-
[解決済み】JSFがゲッターを複数回呼び出す理由
-
[解決済み] Apache Spark: map vs mapPartitions?
-
[解決済み】2次元の点がポリゴン内にあるかどうかを判断するにはどうしたらいいですか?
-
[解決済み] memcachedはRedisに比べれば恐竜のようなもの?[クローズド]
-
[解決済み] フィボナッチヒープを実際に効率よく実装した人はいますか?
-
[解決済み] あなたが見た中で最も馬鹿げたペシミゼーションは何ですか?[閉店]
-
[解決済み] TeamViewerはどうしてこんなに速いのですか?