我们给出了一个(轴对齐的)矩形列表 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的更多相关文章

  1. [Swift]LeetCode850. 矩形面积 II | Rectangle Area II

    We are given a list of (axis-aligned) rectangles.  Each rectangle[i] = [x1, y1, x2, y2] , where (x1, ...

  2. [LeetCode] 850. Rectangle Area II 矩形面积之二

    We are given a list of (axis-aligned) rectangles.  Each rectangle[i] = [x1, y1, x2, y2] , where (x1, ...

  3. [LeetCode] Rectangle Area 矩形面积

    Find the total area covered by two rectilinear rectangles in a2D plane. Each rectangle is defined by ...

  4. 2019计蒜之道初赛4 B. 腾讯益智小游戏—矩形面积交(简单)(矩形交集)

    B. 腾讯益智小游戏—矩形面积交(简单) 1000ms 262144K   腾讯游戏开发了一款全新的编程类益智小游戏,最新推出的一个小游戏题目是关于矩形面积交的.聪明的你能解出来吗?看下面的题目接招吧 ...

  5. [LeetCode] 223. Rectangle Area 矩形面积

    Find the total area covered by two rectilinearrectangles in a 2D plane. Each rectangle is defined by ...

  6. POJ 1151 Atlantis(线段树-扫描线,矩形面积并)

    题目链接:http://poj.org/problem?id=1151 题目大意:坐标轴上给你n个矩形, 问这n个矩形覆盖的面积 题目思路:矩形面积并. 代码如下: #include<stdio ...

  7. 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( ...

  8. 扫描线 + 线段树 : 求矩形面积的并 ---- hnu : 12884 Area Coverage

    Area Coverage Time Limit: 10000ms, Special Time Limit:2500ms, Memory Limit:65536KB Total submit user ...

  9. 【HDU 1542】Atlantis(线段树+离散化,矩形面积并)

    求矩形面积并,离散化加线段树. 扫描线法: 用平行x轴的直线扫,每次ans+=(下一个高度-当前高度)*当前覆盖的宽度. #include<algorithm> #include<c ...

随机推荐

  1. CS224n学习笔记1——深度自然语言处理

    一.什么是自然语言处理呢? 自然语言处理是计算机科学家提出的名字,本质上与计算机语言学是同义的,它跨越了计算机学.语言学以及人工智能学科. 自然语言处理是人工智能的一个分支,在计算机研究领域中,也有其 ...

  2. mail邮件详解

    基础命令学习目录首页 1.配置   vim /etc/mail.rc文件尾增加以下内容 set from=1968089885@qq.com smtp="smtp.qq.com"s ...

  3. 3、昨天的BUG

    基本功能实现了,但是有一些小问题,修改昨天余留的BUG

  4. java怎样把后台值传到前台

    后台代码:if(this.Request["type"]!=null){aaa=this.Request["type"].ToString(); try{bbb ...

  5. js如何判断一个值是不是Array类型

    本来判断一个对象类型用typeof是最好的,不过对于Array类型是不适用的可以使用 instanceof操作符var arrayStr=new Array("1","2 ...

  6. JMeter性能测试基础 (2) - 变量的使用

    在使用JMeter进行性能测试时,一般情况下要保证样本容量尽可能大,这样才能得到一个比较合理的结果.也就是说,我们不能只对同一个URL进行多次访问,而是要对统一模块下尽可能多的URL进行访问,以取得相 ...

  7. linux_添加定时任务,每5min清理下某个文件夹下的文件

    性能测试的过程中会生成大量的日志文件,导致无法继续进行,linux可以增加一个定时任务,进行定时清理 1. 先编写一个sh脚本,该sh脚本用于文件夹文件清理,脚本编写完成后拷贝到服务器上,且授予权限 ...

  8. mysql 时间格式化参数表笔记

    DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据. 语法: DATE_FORMAT(date,format) 实例: DATE_FORMAT(NOW(),'%b %d %Y %h:% ...

  9. 固态盘经常性蓝屏处理方法(WIN7/8)

    型号:intel 520S 大小;120G 我的是笔记本,这段时间辞职,有了时间折腾自己的电脑系统了,想装WIN8来着,PE下直接把固态盘的分区都干掉了,分了C,D(40G,剩下的空间),安装阶段完美 ...

  10. [转帖]TLS 1.3概述

    TLS 1.3概述 http://www.inforsec.org/wp/?p=1960   By Yanting Yang | 四月 26, 2017| SecComm 作者:李新宇 中科院软件所 ...