友情支持
如果您觉得这个笔记对您有所帮助,看在D瓜哥码这么多字的辛苦上,请友情支持一下,D瓜哥感激不尽,😜
|
|
有些打赏的朋友希望可以加个好友,欢迎关注D 瓜哥的微信公众号,这样就可以通过公众号的回复直接给我发信息。

公众号的微信号是: jikerizhi。因为众所周知的原因,有时图片加载不出来。 如果图片加载不出来可以直接通过搜索微信号来查找我的公众号。 |
836. 矩形重叠
矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。矩形的上下边平行于 x 轴,左右边平行于 y 轴。
如果相交的面积为 正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。
给出两个矩形 rec1 和 rec2 。如果它们重叠,返回 true;否则,返回 false。
示例 1:
输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3] 输出:true
示例 2:
输入:rec1 = [0,0,1,1], rec2 = [1,0,2,1] 输出:false
示例 3:
输入:rec1 = [0,0,1,1], rec2 = [2,2,3,3] 输出:false
提示:
-
rect1.length == 4 -
rect2.length == 4 -
-109 <= rec1[i], rec2[i] <= 109 -
rec1和rec2表示一个面积不为零的有效矩形
思路分析
一图胜千言:
| 有点 Merge Intervals 区间合并 的感觉。 |
-
一刷
1
2
3
4
5
6
7
8
9
10
11
/**
* @author D瓜哥 · https://www.diguage.com
* @since 2026-07-27 23:03:45
*/
public boolean isRectangleOverlap(int[] a, int[] b) {
// 投影到 x, y 轴上,画图理解
int ax1 = a[0], ay1 = a[1], ax2 = a[2], ay2 = a[3];
int bx1 = b[0], by1 = b[1], bx2 = b[2], by2 = b[3];
return Math.max(ax1, bx1) < Math.min(ax2, bx2)
&& Math.max(ay1, by1) < Math.min(ay2, by2);
}

