扫描线

news/2024/10/11 2:29:31

题目链接

https://leetcode.cn/problems/rectangle-area-ii/

题目大意

image

题目思路

  • 选取连续的x值:(left,right),在这个区间内,沿着x轴的方向扫描,求出所有符合条件的(y1,y2)
  • 算出扫描区间的h,结合 w * h,算出面积!
    礼貌拿图,多谢三叶姐(https://leetcode.cn/problems/rectangle-area-ii/solutions/1826992/gong-shui-san-xie-by-ac_oier-9r36/)
    image

题目代码

#define ll long long
const int MOD = 1e9 + 7;
class Solution {
public:int rectangleArea(vector<vector<int>>& rectangles) {vector<int> x_axis;for(auto x:rectangles){x_axis.push_back(x[0]);x_axis.push_back(x[2]);}sort(x_axis.begin(),x_axis.end());ll ans = 0;for(int i = 0;i < x_axis.size() - 1;++i){int left = x_axis[i],right = x_axis[i + 1];int w = right - left;if(w == 0) continue;vector<array<int,2>> y_axis;for(auto x:rectangles){if(x[0] <= left && right <= x[2])y_axis.push_back({x[1],x[3]});}sort(y_axis.begin(),y_axis.end());int h = 0,l = -1,r = -1;for(auto y:y_axis){if(y[0] > r){h += r - l;l = y[0],r = y[1];}else if(y[1] > r){r = y[1];}}h += r - l;ans = (ans  + (ll)w * h) % MOD;}return ans;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/27456.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

图床搭建(零成本)

图床搭建(零成本) 基于博客园搭建图床,目前最好的,最简便以及无成本的性价比最高的方法 前言: 使用typora发布博客以及发送给朋友md文档需要打包成压缩包,csdn还无法解码url, 于是搭建免费版github+pic图床,但github图床限制1G,超过就会有人工审核,并且传输不稳定,时…

Osektp.Dll基础解读

前言 OSEKTP是15765的核心组件,也是Autosar操作系统的基础组件,目前仍在应用于Autosar-CP之中。 OsekTP.DLL 功能介绍 Vector称基于ISO15765-2的CAN传输层行为称为OSEK-TP/CAN-TP。 并开发出OSEKTP.DLL的传输层接口以供Capl调用,DLL支持指定单帧及多帧发送、故障注入、流控帧…

Qt学习第一篇(windows下安装和代码规范)

Qt_1Qt Creator 是 Qt 公司生产的 IDE。 它集成了多个工具,包括代码编辑器、图形 UI(GUI)设计器、编译器、调试器、Qt 设计器、Qt 快速设计器和 Qt 助手等。 Qt Designer 帮助设计基于小部件的 GUI,而 Qt Quick Designer 提供了在设计模式下创建和编辑基于 QML 的 GUI 的 UI。…

在下载opencv等类似的包时,需要注意到的一个大问题!

问题描述 我尝试好多次去下载opencv-python的依赖包,发现一直说找不到这个东西 问题解决 查阅了好多资料,尝试了各种方法,发现还是同样的错误,然后突然看到一位博主说“是开了代理的缘故”; 碰巧我也一直开着代理,关闭之后,再次使用清华源尝试下载opencv-python, 发现没…

Promethues (普罗米修斯)详细介绍

Promethues (普罗米修斯)详细介绍Promethues (普罗米修斯)详细介绍 引言 zabbix是传统的监控系统,出现比云原生早,使用的是SQL关系型数据库;而Prometheus基于谷歌的borgemon使用go语言开发,使用TSDB数据库,所以支持云原生。zabbix最新发布的6.0版本,知道自己处于生死…

从零搭建Prometheus监控报警系统

从零搭建Prometheus监控报警系统从零开始搭建Prometheus自动监控报警系统 从零搭建Prometheus监控报警系统 什么是Prometheus? Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。2016年由…

第?课——基于矩阵快速幂的递推解法

第?课——基于矩阵快速幂的递推解法 由于中间的数论部分我自己学的很差,没有办法写出清晰的博客来,所以这里跳过了数论部分的博客,来到矩阵快速幂。 递推 递推是一个非常常用的工具。比如经典的斐波那契数列: \[f(x)= \left\{\begin{array}{**lr**}1 &, 0\leq x\leq 1…

基于深度学习网络的鞋子种类识别matlab仿真

1.算法运行效果图预览 2.算法运行软件版本 matlab2022a3.算法理论概述基于GoogLeNet深度学习网络的鞋子种类识别是一种利用深度卷积神经网络进行物体识别的方法,特别适用于大规模图像分类问题。GoogLeNet以其独特的Inception模块和高效的层级结构,在ImageNet竞赛中取得了卓越…