LeetCode: 223. 矩形面積 [Java實現]
阿新 • • 發佈:2018-11-20
在二維平面上計算出兩個由直線構成的矩形重疊後形成的總面積。
每個矩形由其左下頂點和右上頂點座標表示,如圖所示。
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;
}