Formatted question description:

223. Rectangle Area




Find the total area covered by two rectilinear rectangles in a 2D plane.

Each rectangle is defined by its bottom left corner and top right corner as shown in the figure.

Image text


Input: A = -3, B = 0, C = 3, D = 4, E = 0, F = -1, G = 9, H = 2

Output: 45


Assume that the total area is never beyond the maximum possible value of int.


First find out all the cases of disjoint, there are only four types, one rectangle does not overlap at the top, bottom, left, and right positions of the other. In these four cases, the sum of the area of the two rectangles is returned.

In all other cases, two rectangles have an intersection. At this time, just calculate the length and width to find the size of the intersection area, and then subtract the intersection area from the sum of the two rectangular areas, to get the final answer.



    public class Rectangle_Area {
        class Solution {
            public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
                int erea1 = (C - A) * (D - B), area2 = (H - F) * (G - E);
                if (E >= C || F >= D || B >= H || A >= G) {
                    return erea1 + area2;
                } else {
                    return erea1 + area2 - ((Math.min(G, C) - Math.max(A, E)) * (Math.min(D, H) - Math.max(B, F)));
  • Todo
  • class Solution(object):
      def computeArea(self, A, B, C, D, E, F, G, H):
        :type A: int
        :type B: int
        :type C: int
        :type D: int
        :type E: int
        :type F: int
        :type G: int
        :type H: int
        :rtype: int
        area = (C - A) * (D - B) + (G - E) * (H - F)
        overlap = max(min(C, G) - max(A, E), 0) * max(min(D, H) - max(B, F), 0)
        return area - overlap

All Problems

All Solutions