Find the total area covered by two rectilinear rectangles in a 2D plane.java
Each rectangle is defined by its bottom left corner and top right corner as shown in the figure.
Rectangle Area
Assume that the total area is never beyond the maximum possible value of int.算法
計算兩個矩形總共覆蓋的面積。數組
計算方法爲矩形1的面積+矩形2的面積-兩個矩形共同的覆蓋面積。大數據
算法實現類spa
import java.util.*; public class Solution { public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) { long area = (long) (C - A) * (D - B) + (long)(G - E) * (H - F); // Math.min(C, G) 表示右邊邊的最小的邊 // Math.max(A, E) 表示左邊邊的最大的邊 // 下面的減法會產生數組越介,要擴大數據範圍 long width = Math.max((long)Math.min(C, G) - (long)Math.max(A, E), 0); // Math.min(D, H) 表示頂邊邊的最小的邊 // Math.max(B, F) 表示底邊邊的最大的邊 long height = Math.max((long)Math.min(D, H) - (long)Math.max(B, F), 0); return (int)(area - width * height); } }