【LeetCode】 836. Rectangle Overlap 矩形重叠(Easy)(JAVA)

【LeetCode】 836. Rectangle Overlap 矩形重叠(Easy)(JAVA)

题目地址: https://leetcode.com/problems/rectangle-overlap/

题目描述:

A rectangle is represented as a list [x1, y1, x2, y2], where (x1, y1) are the coordinates of its bottom-left corner, and (x2, y2) are the coordinates of its top-right corner.

Two rectangles overlap if the area of their intersection is positive. To be clear, two rectangles that only touch at the corner or edges do not overlap.

Given two (axis-aligned) rectangles, return whether they overlap.

Example 1:

Input: rec1 = [0,0,2,2], rec2 = [1,1,3,3]
Output: true

Example 2:

Input: rec1 = [0,0,1,1], rec2 = [1,0,2,1]
Output: false

Notes:

Both rectangles rec1 and rec2 are lists of 4 integers.
All coordinates in rectangles will be between -10^9 and 10^9.

题目大意

矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。

如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。

给出两个矩形,判断它们是否重叠并返回结果。

解题方法

1、拆分成 x 轴和 y 轴分别相交
2、x 轴相交 P1(x1, x2) 和 P2(x3, x4) 相交;只要求 P1 和 P2 不相交的情况,要么 P1 >= P2,要么 P1 <= P2,x2 <= x3 || x4 <= x1

class Solution {
    public boolean isRectangleOverlap(int[] rec1, int[] rec2) {
        return iH(rec1[0], rec1[2], rec2[0], rec2[2]) && iH(rec1[1], rec1[3], rec2[1], rec2[3]);
    }

    public boolean iH(int x1, int x2, int x3, int x4) {
        return !(x2 <= x3 || x4 <= x1);
    }
}

执行用时 : 0 ms, 在所有 Java 提交中击败了 100.00% 的用户
内存消耗 : 36.4 MB, 在所有 Java 提交中击败了 5.49% 的用户

发布了95 篇原创文章 · 获赞 6 · 访问量 2809

猜你喜欢

转载自blog.csdn.net/qq_16927853/article/details/104937746