diff --git a/solutions/223. Rectangle Area.md b/solutions/223. Rectangle Area.md new file mode 100644 index 0000000..fbee7ce --- /dev/null +++ b/solutions/223. Rectangle Area.md @@ -0,0 +1,20 @@ +# [223. Rectangle Area](https://leetcode.com/problems/rectangle-area/) +# 思路 +给定两个矩形的位置信息,求两个矩形并集区域面积。 +基本思路:先直接将两个矩形面积相加,然后再判断是否有交集,若有则需要减去交集区域面积。 + +> 注意: 虽然题目说了最终结果不会超过int型,但是不代表中间结果(两矩形面积相加)不会超过,所以我们可以转成long long,或者注意运算顺序; + +# C++ +``` C++ +class Solution { +public: + int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) { + // 不直接加起来是为了防止溢出 + int area1 = (C - A) * (D - B), area2 = (H - F) * (G - E); + if (E >= C || F >= D || B >= H || A >= G) return area1 + area2; + // 先减后加是也为了防止溢出 + return area1 - ((min(G, C) - max(A, E)) * (min(D, H) - max(B, F))) + area2; + } +}; +```