1.問題の説明:
2次元平面上に形成された2つの直線の重なりによって形成される総面積を計算します。
図のように、各長方形は左下の頂点と右上の頂点の座標で表されます。
例:
入力:-3、0、3、4、0、-1、9、2出力:45
説明:長方形の領域はintの範囲を超えないと想定されています。
2.思考分析:
①タイトルによると、計算された長方形の総面積が2つのケースに分かれて計算されていることがわかります。1つ目は2つの長方形が重なっていない場合、2つ目は重なっている場合、2つ目は重なっていない場合は直接座標減算です。次に、領域の2つの部分を追加します。重複する状況では、特定の図形を描画して、特定の幾何学的関係を分析および要約する必要があります。
②パーツが重なっている図は次のとおりです。
3.コードは次のとおりです。
import java.util.Scanner;
public class Solution {
public static int computeArea(int A, int B, int C, int D, int E, int F, int G, int H){
/*未重叠部分*/
int total = (C - A) * (D - B) + (G - E) * (H - F);
if (H <= B || C <= E || G <= A || D <= F) return total;
/*重叠部分*/
int downX = Math.max(A, E);
int upX = Math.min(G, C);
int downY = Math.max(B, F);
int upY = Math.min(D, H);
return total - (upX - downX) * (upY - downY);
}
}