木又连续日更第43天(43/100)
木又的第191篇leetcode解题报告
数学
类型第7篇解题报告
leetcode第223题:矩形面积
https://leetcode-cn.com/problems/rectangle-area
【题目】
在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。
每个矩形由其左下顶点和右上顶点坐标表示,如图所示。
示例:
输入: -3, 0, 3, 4, 0, -1, 9, 2
输出: 45
说明: 假设矩形面积不会超出 int 的范围。
【思路】
两个矩形面积减去公共区域面积,注意:有些情况是没有公共区域的,比如A>G时。
【代码】
python版本
class Solution(object):
def computeArea(self, A, B, C, D, E, F, G, H):
"""
:type A: int
:type B: int
:type C: int
:type D: int
:type E: int
:type F: int
:type G: int
:type H: int
:rtype: int
"""
# ABCD
area1 = (C - A) * (D - B)
# EFGH
area2 = (G - E) * (H - F)
# 无相交
if E > C or A > G or F > D or B > H:
return area1 + area2
area3 = (min(G, C) - max(A, E)) * (min(H, D) - max(B, F))
return area1 + area2 - area3