1. 程式人生 > >【LeetCode】223. 矩形面積 結題報告 (C++)

【LeetCode】223. 矩形面積 結題報告 (C++)

題目描述:

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

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

Rectangle Area

示例:

輸入: -3, 0, 3, 4, 0, -1, 9, 2
輸出: 45
說明: 假設矩形面積不會超出 int 的範圍。

解題方案:

本題就是一道數學題,需要找到規律。自己找了半天,實在是太笨了。。

程式碼:

class Solution {
public:
    int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
        int left = max(A, E);
        int right = min(C, G);
        int up = min(D, H);
        int down = max(B, F);
        int repeat = 0;
        if(right > left && up > down)
            repeat = (right - left) * (up - down);
        return (C-A) * (D-B) + (G-E) * (H-F) - repeat;
    }
};