暴力解法代码实现如下:【逻辑来自下面参考内容中的链接】class Solution
{
public:
int rectangleArea(vector<vector<int>>& rectangles)
{
int MOD = 1e9+7;
vector<int> vec;
for(auto& rect : rectangles)
vec.emplace_back(rect[0]), vec.emplace_back(rect[2]);
sort(vec.begin(), vec.end());
long long ans = 0;
for(int i = 1; i < vec.size(); ++i)
{
int a = vec[i-1], b = vec[i];
int len = b - a;
if(len == 0) continue;
vector<vector<int>> tmp;
for(auto& rect : rectangles)
if(rect[0] <= a and b <= rect[2]) tmp.push_back({rect[1], rect[3]});
sort(tmp.begin(), tmp.end(), [&](const vector<int>& a, const vector<int>& b)
{
return a[0] == b[0] ? a[1] < b[1] : a[0] < b[0];
});
long long cnt = 0, l = -1, r = -1;
for(auto& cur : tmp)
{
if(cur[0] > r)
{
cnt += r - l;
l = cur[0], r = cur[1];
}
else if(cur[1] > r)
r = cur[1];
}
cnt += r - l;
ans += cnt * len;
ans %= MOD;
}
return (int)ans;
}
};
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45