給定兩個包含整數(shù)的范圍[x1:x2]和[y1:y2],其中x1≤x2且y1≤y2,測試這兩個范圍是否存在重疊的最有效方法是什么?一個簡單的實現(xiàn)如下: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);}但我希望有更有效的方法來進行計算。就最少的操作而言,哪種方法是最有效的。
3 回答

慕娘9325324
TA貢獻1783條經驗 獲得超4個贊
這很容易扭曲正常的人腦,因此我發(fā)現(xiàn)一種視覺方法更容易理解:
解釋
如果兩個范圍“太胖”以致不能恰好是兩個寬度的總和,則它們會重疊。
對于范圍[a1, a2],[b1, b2]這將是:
/**
* we are testing for:
* max point - min point < w1 + w2
**/
if max(a2, b2) - min(a1, b1) < (a2 - a1) + (b2 - b1) {
// too fat -- they overlap!
}
添加回答
舉報
0/150
提交
取消