题意: 矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。 矩形的上下边平行于 x 轴,左右边平行于 y 轴。 如果相交的面积为 正 ,则称两矩形重叠。 需要明确的是,只在角或边接触的两个矩形不构成重叠。 给出两个矩形 rec1 和 rec2 。如果它们重叠,返回 true;否则,返回 false 。 数据范围: rect1.length == 4 rect2.length == 4 -1e9 <= rec1[i], rec2[i] <= 1e9 rec1[0] <= rec1[2] 且 rec1[1] <= rec1[3] rec2[0] <= rec2[2] 且 rec2[1] <= rec2[3] 解法: 如果其中一个矩形面积为0,那么return 0. 如果两个矩形有交集,那么在x轴上和y轴上的投影也都会有交集. 只需要判断投影是否都有交集即可. code: class Solution { public: bool isRectangleOverlap(vector<int>& a, vector<int>& b) { if(a[0]==a[2]||a[1]==a[3]||b[0]==b[2]||b[1]==b[3])return 0;//其中一个矩形面积为0的情况. if(a[2]<=b[0]||a[0]>=b[2])return 0; if(a[3]<=b[1]||a[1]>=b[3])return 0; return 1; } };