矩形重叠

作者: _阿南_ | 来源:发表于2020-03-18 13:07 被阅读0次

    题目:

    矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。
    
    如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。
    
    给出两个矩形,判断它们是否重叠并返回结果。
    
    示例 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 都以含有四个整数的列表的形式给出。
    矩形中的所有坐标都处于 -10^9 和 10^9 之间。
    

    题目的理解:

    尝试了好多种方式:
    (1)使用顶点判断。存在边包含的问题,大矩形包含小矩形的问题。 失败
    (2)去除rec2最外面的一个边框判断。存在rec2比rec1大的问题。 失败
    (3)使用群举法将rec1和rec2中的所有点取出并保存在set数组A和B中,判断A和B是否有交集。 存在内存过大的问题。失败
    (4)去除rec2最外面的一个边框判断, 联合去除rec1最外面的一个边框判断。存在当4个点都不存在包含关系的问题。 失败
    (5)rec1的边框和rec2第二层边框的交集。存在rec1包含rec2的问题。 存在超出内存范围的问题。失败
    (6)rec2的左下角坐标必须在rec1的右上角坐标以内,rec2的右上角左边必须在rec1的左下角坐标以内。 成功

    python实现

    class Solution:
        def isRectangleOverlap(self, rec1: List[int], rec2: List[int]) -> bool:
            if rec2[0] < rec1[2] and rec2[1] < rec1[3] and rec2[2] > rec1[0] and rec2[3] > rec1[1]:
                return True
            
            return False
    

    提交

    天啊,把题目想的太复杂了,原来是那么简单的一个判断题啊,哭晕在天际

    // END 好好工作,好好学习

    相关文章

      网友评论

        本文标题:矩形重叠

        本文链接:https://www.haomeiwen.com/subject/xqdqyhtx.html