836 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:

  1. Both rectanglesrec1andrec2are lists of 4 integers.

  2. All coordinates in rectangles will be between -10^9and10^9.

这题主要是正面的判断有太多条件,但是反面的判断条件比较好写。(想起狗家那题candy crush判断移动一格能消除。)这里主要是上下左右都错开。如果上下左右有一个没有错开就证明有overlap了。记得加等号,因为两边重合不算是overlap。

public boolean isRectangleOverlap(int[] rec1, int[] rec2) {
    return !(rec2[0] >= rec1[2] || rec2[2] <= rec1[0] || rec1[1] >= rec2[3] || rec1[3] <= rec2[1]);
}

Last updated