題目:矩形重疊
矩形以列表 [x1, y1, x2, y2]
的形式表示,其中 (x1, y1)
為左下角的坐標(biāo)赁炎,(x2, y2)
是右上角的坐標(biāo)盾鳞。
如果相交的面積為正,則稱兩矩形重疊拱燃。需要明確的是,只在角或邊接觸的兩個矩形不構(gòu)成重疊厨钻。
給出兩個矩形扼雏,判斷它們是否重疊并返回結(jié)果。
示例1:
輸入:rec1 = [0,0,2,2], rec2 = [1,1,3,3]
輸出:true
示例2:
輸入:rec1 = [0,0,1,1], rec2 = [1,0,2,1]
輸出:false
思路
如果rec1
和rec2
沒有重疊夯膀,那么只有四種情況诗充,rec1
在rec2
的上下左右四個方向。
-
rec1[2] <= rec2[0]
rec1
在rec2
的左邊 -
rec1[3] <= rec2[1]
rec1
在rec2
的下面 -
rec1[0] >= rec2[2]
rec1
在rec2
的右邊 -
rec1[1] >= rec2[3]
rec1
在rec2
的上邊
實現(xiàn)
func isRectangleOverlap(rec1 []int, rec2 []int) bool {
return !(rec1[2] <= rec2[0] || // left
rec1[3] <= rec2[1] || // bottom
rec1[0] >= rec2[2] || // right
rec1[1] >= rec2[3]) // top
}