矩形重叠
首先,是矩形,不是矩阵。
矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。
如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。
输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3]
输出:true
做这道题的话,找出不重叠的情况要比找出重叠的情况更简单。我们可以找出不会重叠的几种情况,排除掉,剩下的都是重叠的情况。
第1种情况:
矩形rec1的右边界<矩形rec2的左边界
or
矩形rec2的右边界<矩形rec1的左边界
第2种情况
矩形rec1的上边界<矩形rec2的下边界
or
矩形rec2的上边界<矩形rec1的下边界
注意要求:只在角或边接触的两个矩形不构成重叠。
所以上面的 < 改成 <= 更合适。
这样的话,我们的代码时间复杂度和空间复杂度就是O(1)
return !(rec1[2]<=rec2[0]||rec2[2]<=rec1[0]||rec1[3]<=rec2[1]||rec2[3]<=rec1[1]);