1. 程式人生 > >【LeetCode-面試演算法經典-Java實現】【223-Rectangle Area(矩形區域)】

【LeetCode-面試演算法經典-Java實現】【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.
  Rectangle Area
  Assume that the total area is never beyond the maximum possible value of int.

題目大意

  計算兩個矩形總共覆蓋的面積。

解題思路

  計算方法為矩形1的面積+矩形2的面積-兩個矩形共同的覆蓋面積。

程式碼實現

演算法實現類

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); } }

評測結果

  點選圖片,滑鼠不釋放,拖動一段位置,釋放後在新的視窗中檢視完整圖片。

這裡寫圖片描述

特別說明