首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

LeetCode 223:兩矩形總面積(計算重疊區域並減去)

     編輯:關於C++

題目描述

給定兩個軸對齊矩形的左下角和右上角坐標,計算它們覆蓋的總面積。假設總面積不超過 int 最大值。

重疊區域計算

矩形 1:A,B (左下), C,D (右上)。矩形 2:E,F, G,H。
重疊區域左下角:(max(A,E), max(B,F)),右上角:(min(C,G), min(D,H))。
若左下角坐標大於等於右上角坐標,則無重疊。
總面積 = 面積1 + 面積2 - 重疊面積。

代碼實現 (C++)

class Solution {
public:
    int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
        long area1 = (long)(C - A) * (D - B);
        long area2 = (long)(G - E) * (H - F);
        long overlapW = max(0, min(C, G) - max(A, E));
        long overlapH = max(0, min(D, H) - max(B, F));
        long overlap = overlapW * overlapH;
        return (int)(area1 + area2 - overlap);
    }
};

複雜度

  • 時間:O(1)
  • 空間:O(1)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved