850. 矩形面积 II
我们给出了一个(轴对齐的)矩形列表 rectangles 。 对于 rectangle[i] = [x1, y1, x2, y2],其中(x1,y1)是矩形 i 左下角的坐标,(x2,y2)是该矩形右上角的坐标。 找出平面中所有矩形叠加覆盖后的总面积。 由于答案可能太大,请返回它对 ^ + 取模的结果。 示例 : 输入:[[,,,],[,,,],[,,,]]
输出:
解释:如图所示。
示例 : 输入:[[,,,]]
输出:
解释:答案是 ^ 对 (^ + ) 取模的结果, 即 (^)^ → (-)^ = 。
提示: <= rectangles.length <=
rectanges[i].length =
<= rectangles[i][j] <= ^
矩形叠加覆盖后的总面积不会超越 ^ - ,这意味着可以用一个 位有符号整数来保存面积结果。
解题算法:
class Solution {
public:
static bool cmp(vector<int> a,vector<int> b){
return a[] < b[];
}
int getDeep(vector<vector<int>>& rectangles,int x1,int x2){
vector<pair<int,int>> deep;
int length = ;
int start;
int end;
for(int i = ;i < rectangles.size(); ++i){
if(x1 >= rectangles[i][] && x2 <= rectangles[i][]){
if(deep.empty()){
deep.push_back(make_pair(rectangles[i][],rectangles[i][]));
}else{
end = deep[deep.size()-].second;
if(rectangles[i][] <= end){
start = deep[deep.size()-].first;
end = max(end,rectangles[i][]);
deep.pop_back();
deep.push_back(make_pair(start,end));
}else{
deep.push_back(make_pair(rectangles[i][],rectangles[i][]));
}
}
}
}
for(int i = ;i < deep.size(); ++i){
length += deep[i].second - deep[i].first;
}
return length;
}
int rectangleArea(vector<vector<int>>& rectangles) {
long long mod = + ;
long long area = ;
vector<long long> X;
for(int i = ;i < rectangles.size(); ++i){
X.push_back(rectangles[i][]);
X.push_back(rectangles[i][]);
}
sort(X.begin(),X.end());
sort(rectangles.begin(),rectangles.end(),cmp);
vector<long long>::iterator end_unique = unique(X.begin(), X.end());
X.erase(end_unique, X.end());
for(int i = ;i < X.size(); ++i){
long long height = getDeep(rectangles,X[i-],X[i]);
long long width = X[i]-X[i-];
area += (width*height)%mod;
area = area%mod;
}
return area;
}
};
850. 矩形面积 II的更多相关文章
- [Swift]LeetCode850. 矩形面积 II | Rectangle Area II
We are given a list of (axis-aligned) rectangles. Each rectangle[i] = [x1, y1, x2, y2] , where (x1, ...
- [LeetCode] 850. Rectangle Area II 矩形面积之二
We are given a list of (axis-aligned) rectangles. Each rectangle[i] = [x1, y1, x2, y2] , where (x1, ...
- [LeetCode] Rectangle Area 矩形面积
Find the total area covered by two rectilinear rectangles in a2D plane. Each rectangle is defined by ...
- 2019计蒜之道初赛4 B. 腾讯益智小游戏—矩形面积交(简单)(矩形交集)
B. 腾讯益智小游戏—矩形面积交(简单) 1000ms 262144K 腾讯游戏开发了一款全新的编程类益智小游戏,最新推出的一个小游戏题目是关于矩形面积交的.聪明的你能解出来吗?看下面的题目接招吧 ...
- [LeetCode] 223. Rectangle Area 矩形面积
Find the total area covered by two rectilinearrectangles in a 2D plane. Each rectangle is defined by ...
- POJ 1151 Atlantis(线段树-扫描线,矩形面积并)
题目链接:http://poj.org/problem?id=1151 题目大意:坐标轴上给你n个矩形, 问这n个矩形覆盖的面积 题目思路:矩形面积并. 代码如下: #include<stdio ...
- 25.按要求编写一个Java应用程序: (1)编写一个矩形类Rect,包含: 两个属性:矩形的宽width;矩形的高height。 两个构造方法: 1.一个带有两个参数的构造方法,用于将width和height属性初化; 2.一个不带参数的构造方法,将矩形初始化为宽和高都为10。 两个方法: 求矩形面积的方法area() 求矩形周长的方法perimeter() (2)通过继承Rect类编写一个具有
package zhongqiuzuoye; //自己写的方法 public class Rect { public double width; public double height; Rect( ...
- 扫描线 + 线段树 : 求矩形面积的并 ---- hnu : 12884 Area Coverage
Area Coverage Time Limit: 10000ms, Special Time Limit:2500ms, Memory Limit:65536KB Total submit user ...
- 【HDU 1542】Atlantis(线段树+离散化,矩形面积并)
求矩形面积并,离散化加线段树. 扫描线法: 用平行x轴的直线扫,每次ans+=(下一个高度-当前高度)*当前覆盖的宽度. #include<algorithm> #include<c ...
随机推荐
- Ruby知识点三:运算符
1.逻辑运算符 (1)条件1 || 条件2 条件1为假时,才需判断条件2 (2)条件1 && 条件2 条件1为真时,才需判断条件2 2.范围运算符 (1)x..y 从x到y,包括y ...
- 微信小程序开发调试技巧
1. 查看线上小程序console a. 先打开开发小程序console b. 再打开线上小程序,此时可以查看console
- CS小分队第二阶段冲刺站立会议(6月2日)
昨日成果:攻克了按钮移动的问题: 遇到问题:一开始按钮移动时候,非常慢,因为是根绝相对位移差来移动,延时很严重,后来改用用鼠标的位置作为按钮的移动位置,效果明显. 按钮的mousedown事件和mou ...
- HDU 1170 Shopping Offers 离散+状态压缩+完全背包
题目链接: http://poj.org/problem?id=1170 Shopping Offers Time Limit: 1000MSMemory Limit: 10000K 问题描述 In ...
- Week2-作业1-part2.阅读与思考
第一章.概论 原文: 在成熟的航空工业中,一个飞机发动机从构思到最后运行,不知道经历过多少人.多少工序.多少流程.多少相关知识的验证.我们无法想象,某个商用型号的发动机在飞行时发现问题,最初的设计师会 ...
- 单片机FLASH与RAM、ROM的关系
片机FLASH主要用作程序存贮器,就是替代以前的ROM,最大的有有点是降低了芯片的成本并且可以做到电擦写,目前市场上单片机的FALSH寿命相差比较大,擦写次数从1000~10万的都有,但存储时间可以保 ...
- TCP系列54—拥塞控制—17、AQM及ECN
一.概述 ECN的相关内容是在RFC3168中定义的,这里我简单描述一下RFC3168涉及的主要内容. 1.AQM和RED 目前TCP中多数的拥塞控制算法都是通过缓慢增加拥塞窗口直到检测到丢包来进行慢 ...
- IIS8.5 的环境下添加配置WCF服务!!!!!
添加步骤: 1.打开iis8.5,先部署wcf服务. 2.首先添加MIME类型 扩展名:“.svc” MIME类型:“application/octet-stream” 3.添加 处理程序映射 请求路 ...
- PAT 甲级 1146 Topological Order
https://pintia.cn/problem-sets/994805342720868352/problems/994805343043829760 This is a problem give ...
- 移动端-webkit-user-select:none导致input/textarea输入框无法输入
这个问题,也算是个大坑了. 最开始的开始,是因为我们在做大装盘活动的时候,发现在ios上面出现了这样的问题:点击“转”按钮,ios上面会有延迟并且会出现图片的阴影,这个肯定就不好看了撒,然后,找吧,改 ...