算法分享

在二維平面上計(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;


? ? }


}


```

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容