(忘记引用原文了,这昨天的两矩形面积和)
还记得边长为 1 的正方形面积为 1,而既然我们有座标,是不是可以去看两个长方形里面
总共有多少个正方形就好了?
大概像这样:
class Solution:
def computeArea(self, ax1: int, ay1: int, ax2: int, ay2: int, bx1: int, by1:
int, bx2: int, by2: int) -> int:
a_points = {(i, j) for i in range(ax1, ax2) for j in range(ay1, ay2)}
b_points = {(i, j) for i in range(bx1, bx2) for j in range(by1, by2)}
return len(a_points.union(b_points))
你可能会想说 range(start, end) 不是下包上不包吗?为什么不用 +1?
我本来也这样想,直到测试出来的结果跟想的不一样,后来才发现集合里面的座标是表示各
正方形左下角的点而不是正方形本身,所以不用 +1。
最后把两个集合做联集,看里面有多少正方形就是答案了。
其实我没想到这样会过==可能座标不够大吧?