列表

详情


NC374. 矩形重叠

描述

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

数据范围:矩形的四个角坐标满足

示例1

输入:

[0,0,2,2],[2,2,4,4]

输出:

false

示例2

输入:

[0,0,2,2],[1,1,3,3]

输出:

true

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 3ms, 内存消耗: 396KB, 提交时间: 2022-07-25

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param r1 int整型vector 
     * @param r2 int整型vector 
     * @return bool布尔型
     */
    bool overlapRec(vector<int>& r1, vector<int>& r2) {
        // write code here
//         return !(r1[2] < r2[0] || // 右
//                 r1[3] < r2[1] || // 上
//                 r2[3] < r1[1] || // 下
//                 r2[2] < r1[0] // 左
//                 );
        return ((min(r1[2], r2[2]) > max(r1[0], r2[0])) && (min(r1[3], r2[3]) > max(r1[1], r2[1])));
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 396KB, 提交时间: 2022-07-15

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param r1 int整型vector 
     * @param r2 int整型vector 
     * @return bool布尔型
     */
    bool overlapRec(vector<int>& r1, vector<int>& r2) {
        // write code here
        return (max(r1[0], r2[0]) < min(r1[2], r2[2])) && (max(r1[1], r2[1]) < min(r1[3], r2[3]));
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 396KB, 提交时间: 2022-05-13

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param r1 int整型vector 
     * @param r2 int整型vector 
     * @return bool布尔型
     */
    bool overlapRec(vector<int>& r1, vector<int>& r2)
    {
         return (min(r1[2], r2[2]) > max(r1[0], r2[0])) && (max(r1[1], r2[1]) < min(r1[3], r2[3]));
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 412KB, 提交时间: 2022-04-13

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param r1 int整型vector 
     * @param r2 int整型vector 
     * @return bool布尔型
     */
    bool overlapRec(vector<int>& r1, vector<int>& r2) {
        // write code here
        int w = min(r1[2], r2[2]) - max(r1[0], r2[0]);
        int h = min(r1[3], r2[3]) - max(r1[1], r2[1]);
        if (w >= 0 && h >= 0) {
            return true;
        }
        else {
            return false;
        }
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 420KB, 提交时间: 2022-05-17

class Solution {
public:
    bool overlapRec(vector<int>& r1, vector<int>& r2) {
        return (min(r1[2], r2[2]) > max(r1[0], r2[0])) && (max(r1[1], r2[1]) < min(r1[3], r2[3]));
    }
};

上一题