【C++离线查询】2250. 统计包含每个点的矩形数目

news2024/9/23 1:19:03

本文涉及的基础知识点

离线查询

LeetCode2250. 统计包含每个点的矩形数目

给你一个二维整数数组 rectangles ,其中 rectangles[i] = [li, hi] 表示第 i 个矩形长为 li 高为 hi 。给你一个二维整数数组 points ,其中 points[j] = [xj, yj] 是坐标为 (xj, yj) 的一个点。
第 i 个矩形的 左下角 在 (0, 0) 处,右上角 在 (li, hi) 。
请你返回一个整数数组 count ,长度为 points.length,其中 count[j]是 包含 第 j 个点的矩形数目。
如果 0 <= xj <= li 且 0 <= yj <= hi ,那么我们说第 i 个矩形包含第 j 个点。如果一个点刚好在矩形的 边上 ,这个点也被视为被矩形包含。
示例 1:
输入:rectangles = [[1,2],[2,3],[2,5]], points = [[2,1],[1,4]]
在这里插入图片描述

输出:[2,1]
解释:
第一个矩形不包含任何点。
第二个矩形只包含一个点 (2, 1) 。
第三个矩形包含点 (2, 1) 和 (1, 4) 。
包含点 (2, 1) 的矩形数目为 2 。
包含点 (1, 4) 的矩形数目为 1 。
所以,我们返回 [2, 1] 。
示例 2:
输入:rectangles = [[1,1],[2,2],[3,3]], points = [[1,3],[1,1]]
在这里插入图片描述

输出:[1,3]
解释:
第一个矩形只包含点 (1, 1) 。
第二个矩形只包含点 (1, 1) 。
第三个矩形包含点 (1, 3) 和 (1, 1) 。
包含点 (1, 3) 的矩形数目为 1 。
包含点 (1, 1) 的矩形数目为 3 。
所以,我们返回 [1, 3] 。
提示:
1 <= rectangles.length, points.length <= 5 * 104
rectangles[i].length == points[j].length == 2
1 <= li, xj <= 109
1 <= hi, yj <= 100
所有 rectangles 互不相同 。
所有 points 互不相同 。

C++二分查找

注意:y和高度<=100,故可以不用树状数组。
将rectangles按宽的降序排序
将points的下标indexs按x降序排序。
枚举indexs。
ys[j]记录矩形宽度大于等于points[i][0]且高度为j的矩形数量。
去掉排序的时间复杂度为:O(n100)

代码

核心代码

class Solution {
		public:
			vector<int> countRectangles(vector<vector<int>>& rectangles, vector<vector<int>>& points) {
				sort(rectangles.begin(), rectangles.end(), [&](const auto& v1, const auto& v2) {return v1[0] > v2[0]; });
				vector<int> indexs(points.size());
				iota(indexs.begin(), indexs.end(), 0);
				sort(indexs.begin(), indexs.end(), [&](int i1, int i2) {return points[i1][0] > points[i2][0]; });
				int ys[101] = { 0 };
				int j = 0;
				vector<int> ret;
				for (const auto& iiii : indexs) {
					while ((j < rectangles.size()) && (rectangles[j][0] >= points[iiii][0])) {
						ys[rectangles[j][1]]++;
						j++;
					}
					int cur = 0;
					for (int k = points[iiii][1]; k <= 100; k++) {
						cur += ys[k];
					}
					ret.emplace_back(cur);
				}
				return ret;
			}
		};

单元测试

vector<vector<int>>rectangles,  points;
		TEST_METHOD(TestMethod11)
		{
			rectangles = { {1,2},{2,3},{2,5} }, points = { {2,1},{1,4} };
			auto res = Solution().countRectangles(rectangles, points);
			AssertEx({ 2,1 }, res);
		}
		TEST_METHOD(TestMethod12)
		{
			rectangles = { {1,1},{2,2},{3,3} }, points = { {1,3},{1,1} };
			auto res = Solution().countRectangles(rectangles, points);
			AssertEx({1,3 }, res);
		}

扩展阅读

我想对大家说的话
工作中遇到的问题,可以按类别查阅鄙人的算法文章,请点击《算法与数据汇总》。
学习算法:按章节学习《喜缺全书算法册》,大量的题目和测试用例,打包下载。重视操作
有效学习:明确的目标 及时的反馈 拉伸区(难度合适) 专注
闻缺陷则喜(喜缺)是一个美好的愿望,早发现问题,早修改问题,给老板节约钱。
子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。
如果程序是一条龙,那算法就是他的是睛
失败+反思=成功 成功+反思=成功

视频课程

先学简单的课程,请移步CSDN学院,听白银讲师(也就是鄙人)的讲解。
https://edu.csdn.net/course/detail/38771
如何你想快速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.csdn.net/lecturer/6176

测试环境

操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 C++17
如无特殊说明,本算法用**C++**实现。

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

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

相关文章

Linux——文件系统层次结构,绝对路径

一、文件系统层次结构 linux中所有文件存储在文件系统中&#xff0c;文件系统层次结构可以类比为一颗到立的树&#xff0c;最顶层为根目录/&#xff0c;根目录/底又分了/etc,/bin,/boot,/dev等子目录&#xff0c;而这些子目录底下又可以生成子目录分支。 以下为linux中较为重要…

亿图设备采集

这个数控系统的英文名是HUST,在台湾知名度还可以,但大陆这边我做这么多年项目也只接触过屈指可数的几次,可见市场占有率并不大。下面是一些介绍: 台灣億圖 HUST CNC 是一個充滿活力的公司,我們經營的目標是提供能滿足客戶之優良產品,以及優質的服務。我們的期望是使 HUS…

【STM32】驱动LCD

没买LCD屏&#xff0c;没有上机实践&#xff0c;只是学习了理论。 大部分图片来源&#xff1a;正点原子HAL库课程 专栏目录&#xff1a;记录自己的嵌入式学习之路-CSDN博客 目录 1 屏幕接口 2 屏幕驱动的基本步骤 3 8080时序的各信号线 4 8080的读和写 5 屏…

微信开发者工具上传代码到微信Git

1、创建Git用户并设置密码 2、创建项目 3、开发者工具中设置授权方式 4、开发者工具中设置创建地址 5、如有需要执行其他Git命令 到这里点击 “推送”可以上传代码到创建。

hutool excel 导出,格式错误,打开乱码

现象 最近在使用hutool excel 实现网站数据导出excel功能。在swagger 中调试接口时候遇到下载文件不能打开或者乱码的问题。 1. xlsx 文件不能打开 2. xls 文件打开乱码 解决方案 直接使用postman 或者 get 请求使用浏览器地址栏 总之&#xff0c;excel 文件不能导出&#xf…

一文带你全面理解Transformer的工作原理【图解】

文章目录 1、Transformer背景介绍1.1、Transformer的诞生1.1.1、首次提出1.1.2、后续的发展 1.2、Transformer的优势1.3、Transformer的市场 2、Transformer架构2.1、总览2.2、输入部分2.3、输出部分包含2.4、编码器部分2.4.1、总览2.4.2、详细拆分 2.5、解码器部分2.5.1、总览…

前沿重器[55] | prompt综述的解释和个人思考

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享&#xff0c;从中抽取关键精华的部分和大家分享&#xff0c;和大家一起把握前沿技术。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。&#xff08;算起来&#xff0c;专项启动已经…

输入名字和链接转换成对象

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>输入名字和链接转换成对象</title> </he…

Open3D 基于曲率条件的滤波(37)

Open3D 基于曲率条件的滤波&#xff08;37&#xff09; 一、算法介绍二、算法实现1.代码2.效果 一、算法介绍 曲率是描述曲面或曲线弯曲程度的数学量。在三维空间中&#xff0c;曲率可以用于分析点云数据的几何特征。通常&#xff0c;较小的曲率值表明该点位于相对平坦的区域&…

文章中的错字一并替换成正确的字

with open("文件路径"&#xff0c;"模式"&#xff0c;"编码") as file ("r" 是读&#xff0c;"w"是写) with open(r"D:\python-installer\python-code\pythonProject\src\关于文件操作练习/人物介绍.txt",&quo…

爆改YOLOv8 | 利用MB-TaylorFormer提高YOLOv8图像去雾检测

1&#xff0c;本文介绍 MB-TaylorFormer是一种新型多支路线性Transformer网络&#xff0c;用于图像去雾任务。它通过泰勒展开改进了softmax-attention&#xff0c;使用多支路和多尺度结构以获取多层次和多尺度的信息&#xff0c;且比传统方法在性能、计算量和网络重量上更优。…

拉取Github仓库错误

说明&#xff1a;记录一次拉取github仓库时&#xff0c;报下面的错误 $ git clone https://github.com/LamSpace/data-plus.git Cloning into data-plus... fatal: unable to access https://github.com/LamSpace/data-plus.git/: SSL certificate problem: unable to get loc…

windows本地搭建zookeeper和kafka环境

zookeeper 1.1 下载zookeeper 下载地址 随便进一个站点&#xff0c;默认是新版本&#xff0c;旧版本点击archives进入&#xff0c;选择合适的版本下载&#xff0c;本文使用的是3.7.2 下载时候选择apache-zookeeper-3.7.2-bin.tar.gz 格式的&#xff0c;编译后的&#xff0c;解…

Overleaf参考文献由 BibTex 转 \bibitem 格式

目录 Overleaf参考文献由 BibTex 转 \bibitem 格式一、获取引用论文的BibTex二、编写引用论文对应的bib文件三、编写生成bibitem的tex文件四、转化bibitem格式 参考资料 Overleaf参考文献由 BibTex 转 \bibitem 格式 一、获取引用论文的BibTex 搜索论文引用点击BibTex 跳转出…

Ps:首选项

Photoshop 的“首选项” Preferences是一个集中的设置面板&#xff0c;允许用户根据自己的工作流程和个人喜好来定制软件的行为和界面。 Windows&#xff1a; Ps菜单&#xff1a;编辑/首选项 Edit/Preferences 快捷键&#xff1a;Ctrl K macOS&#xff1a; Ps菜单&#xff1a;…

市域社会治理解决方案

1. 建设背景与政策解读 市域社会治理现代化是响应党的十九届四中全会《决定》和中央政法委秘书长陈一新的指示&#xff0c;旨在加强和创新社会治理&#xff0c;构建和谐社会。通过“综治中心网格化信息化”模式&#xff0c;提升基层社会治理能力&#xff0c;确保社会安定有序。…

一道ssrf题目--Web-ssrfme

目录 环境搭建 代码分析 漏洞点寻找 渗透 使用工具构造payload 结果 ​编辑 环境搭建 使用docker拉取上面文件 rootubuntu:~/web-ssrfme/web-ssrfme# docker-compose up -d代码分析 首先进入题目环境&#xff0c;查看docker发现在8091端口下&#xff0c;进入后出现这…

基于ssm+vue的前后端分离鲜花销售系统

系统背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管理。这样的大环境让那些止步不前&#xff0c;不接受…

Springboot里集成Mybatis-plus、ClickHouse

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; Springboot里集成Mybati…

第2章-09-浏览器同源策略及跨域

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年CSDN全站百大博主。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于专栏:Web爬虫入门与实战精讲,后续完整更新内容如下。 文章…