1. 程式人生 > >LeetCode: 223. 矩形面積 [Java實現]

LeetCode: 223. 矩形面積 [Java實現]

在二維平面上計算出兩個由直線構成的矩形重疊後形成的總面積。

每個矩形由其左下頂點和右上頂點座標表示,如圖所示。

Rectangle Area

示例:

輸入: -3, 0, 3, 4, 0, -1, 9, 2 輸出: 45

說明: 假設矩形面積不會超出 int 的範圍。
我寫的可能較為繁瑣,有非常簡單的方法求的交匯矩形的面積,這裡我只貼出我自己的笨方法

 public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {

        int S1 = (C - A) * (D - B);
        int
S2 = (G - E) * (H - F); if (E >= C || B >= H || A >= G || F >= D) return S1 + S2; int s = 0; //m在n內部 if (C >= G && E >= A && F >= B && D >= H) { return S1; } //n在m內部 else if (G >= C && A >= E && B >= F && H >= D) { return
S2; } else { int w, h; //計算交合矩形寬度 w = getH(G, E, C, A, C - E, G - A, G - E, C - A); //計算交合矩形高 h = getH(B, D, F, H, H - B, D - F, H - F, D - B); s = S1 + S2 - w * h; } return s; } private int getH(int
B, int D, int F, int H, int i, int i2, int i3, int i4) { int h; if (D >= H && B >= F) { h = i; } else if (H >= D && F >= B) { h = i2; } else if (D >= H) { h = i3; } else { h = i4; } return h; }