矩形區域

原題

  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);
    }
}
相關文章
相關標籤/搜索