Java

/**

 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.

 */

import javafx.util.Pair;

public class Rectangle_Overlap {

    public static void main(String[] args) {

        Rectangle_Overlap out = new Rectangle_Overlap();
        Solution s = out.new Solution();

        int[] a = new int[]{0,0,2,2};
        int[] b = new int[]{1,1,3,3};

        System.out.println(s.isRectangleOverlap(a, b));

    }

    class Solution {
        public boolean isRectangleOverlap(int[] rec1, int[] rec2) {
            if (rec1 == null || rec1.length == 0 || rec2 == null || rec2.length == 0
                || rec1.length != 4 || rec2.length != 4) {
                return false;
            }

            // rectangles abstracted to 2 lines
            // overlap meaning, both lines are overlapping
            Pair<Integer, Integer> rec1horizontal = new Pair<>(rec1[0], rec1[2]);
            Pair<Integer, Integer> rec1vertical = new Pair<>(rec1[1], rec1[3]);

            Pair<Integer, Integer> rec2horizontal = new Pair<>(rec2[0], rec2[2]);
            Pair<Integer, Integer> rec2vertical = new Pair<>(rec2[1], rec2[3]);

            return isOverlap(rec1horizontal, rec2horizontal) && isOverlap(rec1vertical, rec2vertical);
        }

        private boolean isOverlap(Pair<Integer, Integer> line1, Pair<Integer, Integer> line2) {

            return !(line1.getValue() <= line2.getKey() || line1.getKey() >= line2.getValue());
        }
    }

}

Java

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

All Problems

All Solutions