乐趣区

关于leetcode:Leetcode-PHP题解D129-836-Rectangle-Overlap

D129 836. Rectangle Overlap

题目链接

836. Rectangle Overlap

题目剖析

给两个矩形的左下角和右上角的坐标,判断该矩形有没有重叠。边线和角雷同不算重叠。

解题思路

咱们先疏忽 Y 轴,只思考 X 轴。在 x 轴上,矩形 A 和矩形 B 的横坐标从小到大排列有 6 种关系:

Ax1, Ax2, Bx1, Bx2
Ax1, Bx1, Ax2, Bx2
Ax1, Bx1, Bx2, Ax2
Bx1, Ax1, Bx1, Ax2
Bx1, Ax1, Ax2, Bx2
Bx1, Bx2, Ax1, Ax2

其中,第一个和最初一个是不重叠的状况,两头 4 种都是会重叠的。

在拿到坐标后,判断坐标之间是否有这种关系。Y 轴同理。

最终代码

<?php
class 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;
    }
}

若感觉本文章对你有用,欢送用爱发电赞助。

退出移动版