D129 836. Rectangle Overlap
题目链接
836. Rectangle Overlap
题目剖析
给两个矩形的左下角和右上角的坐标,判断该矩形有没有重叠。边线和角雷同不算重叠。
解题思路
咱们先疏忽Y轴,只思考X轴。在x轴上,矩形A和矩形B的横坐标从小到大排列有6种关系:
Ax1, Ax2, Bx1, Bx2Ax1, Bx1, Ax2, Bx2Ax1, Bx1, Bx2, Ax2Bx1, Ax1, Bx1, Ax2Bx1, Ax1, Ax2, Bx2Bx1, Bx2, Ax1, Ax2
其中,第一个和最初一个是不重叠的状况,两头4种都是会重叠的。
在拿到坐标后,判断坐标之间是否有这种关系。Y轴同理。
最终代码
<?phpclass Solution { /** * @param Integer[] $rec1 * @param Integer[] $rec2 * @return Boolean */ const BOTTOM_LEFT_X = 0; const BOTTOM_LEFT_Y = 1; const TOP_RIGHT_X = 2; const TOP_RIGHT_Y = 3; function isRectangleOverlap($rec1, $rec2) { if($rec1[self::TOP_RIGHT_X]<=$rec2[self::BOTTOM_LEFT_X] || $rec2[self::TOP_RIGHT_X]<=$rec1[self::BOTTOM_LEFT_X] ){ return false; } if($rec1[self::TOP_RIGHT_Y]<=$rec2[self::BOTTOM_LEFT_Y] || $rec2[self::TOP_RIGHT_Y]<=$rec1[self::BOTTOM_LEFT_Y] ){ return false; } return true; }}
若感觉本文章对你有用,欢送用爱发电赞助。