题解 | 矩形重叠

矩形重叠

https://www.nowcoder.com/practice/53acad54f18444a9b714acd75115d817

题目:

给定两个矩形,分别以四个数字 [x1,y1,x2,y2] 表示,其中 (x1,y1) 表示矩形左下角(x2,y2) 表示矩形右上角(题目这里写错了,两个下角是无法确定一个矩形的),矩形的上下边平行于 x 轴,左右边平行于 y 轴。 如果两个矩形相交的面积为正,则两矩形重叠。如果重叠则输出 true ,否则输出 false

解题思路:

找到重叠的矩形

如果两个矩形重叠

  • 那么重叠的矩形左下角x一定是两个矩形左下角x的max值,右上角x一定是两个矩形右上角的min值
  • 重叠矩形左下角y一定是两个矩形左下角y的max值,右上角y一定是两个矩形右上角的min值
  • 现在,我们只需要判断这个“重叠”出来的矩形,是不是个矩形,即,我们得到的重叠矩形右上角,在不在左下角的右上方
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param r1 int整型一维数组
# @param r2 int整型一维数组
# @return bool布尔型
#
class Solution:
    def overlapRec(self, r1: List[int], r2: List[int]) -> bool:
        # write code here
        return (min(r1[2], r2[2]) > max(r1[0], r2[0])) and (max(r1[1], r2[1]) < min(r1[3], r2[3]))
#要确保矩阵有重叠,则:
#最小的x2要大于最大的x1,且最大的y1要小于最小的y2

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务