在二維平面上計(jì)算出兩個(gè)由直線構(gòu)成的矩形重疊后形成的總面積。
每個(gè)矩形由其左下頂點(diǎn)和右上頂點(diǎn)坐標(biāo)表示,如圖所示。
輸入: -3, 0, 3, 4, 0, -1, 9, 2
輸出: 45
說明: 假設(shè)矩形面積不會(huì)超出 int 的范圍?!?/p>
仔細(xì)分析,通過數(shù)學(xué)公式進(jìn)行計(jì)算,可以看出H-B等于第一個(gè)矩形加第二個(gè)矩形得邊相加再減去一個(gè)重疊得長(zhǎng)度,因此可以計(jì)算出重疊長(zhǎng)度,同理重疊得面積可以算出
具體代碼
```java
class Solution {
? ? public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
? ? ? ? int are=0;
if((D-B)*(C-A)==0)return are =(G-E)*(H-F);
if((G-E)*(H-F)==0)return are=(D-B)*(C-A);
if(A>=G||E>=C||B>=H||F>=D){
are = (D-B)*(C-A)+(G-E)*(H-F);
return are;}
int max=0;
int max1=0;
if(E>=A&&G>C){max=G-A;}
if(E>=A&&G<=C)max=C-A;
if(E<A&&G<=C)max=C-E;
if(E<A&&G>C)max=G-E;
if(B>=F&&H<D)max1=D-F;
if(B>=F&&H>=D)max1=H-F;
if(B<F&&H<D)max1=D-B;
if(B<F&&H>=D)max1=H-B;
are = (D-B)*(C-A)+(G-E)*(H-F)-(D-B+H-F-max1)*(C-A+G-E-max);
return are;
? ? }
}
```