Leetcode.939 最小面积矩形

news/2025/2/16 2:10:31/

题目链接

Leetcode.939 最小面积矩形 Rating : 1752

题目描述

给定在 xy平面上的一组点,确定由这些点组成的矩形的最小面积,其中矩形的边平行于 x 轴和 y 轴。

如果没有任何矩形,就返回 0

示例 1:

输入:[[1,1],[1,3],[3,1],[3,3],[2,2]]
输出:4

示例 2:

输入:[[1,1],[1,3],[3,1],[3,3],[4,1],[4,3]]
输出:2

提示:

  • 1<=points.length<=5001 <= points.length <= 5001<=points.length<=500
  • 0<=points[i][0]<=400000 <= points[i][0] <= 400000<=points[i][0]<=40000
  • 0<=points[i][1]<=400000 <= points[i][1] <= 400000<=points[i][1]<=40000
  • 所有的点都是不同的

解法:哈希表 + 枚举

对于每一个点 (x,y),我们都可以存入到一个哈希表 uset中。

因为每一个点的最大值是 40000。为了方便,我们可以存入 x * 40001 + y这样的一个数到 uset中。将两个点映射成一个数。

接下来枚举矩形的 左上角顶点(x1 , y1)右下角顶点(x2 , y2)。 再判断另外两个顶点在不在集合中,同时在的话,就可以构成一个矩形。

在这里插入图片描述

时间复杂度:O(n2)O(n^2)O(n2)

C++代码:

class Solution {
public:int minAreaRect(vector<vector<int>>& points) {unordered_set<int> uset;for(auto &p:points){uset.insert(p[0] * 40001 + p[1]);}int n = points.size();int s = 1e9;for(int i = 0;i < n;i++){int x1 = points[i][0] , y1 = points[i][1];for(int j = i + 1;j < n;j++){int x2 = points[j][0] , y2 = points[j][1];if(x1 == x2 || y1 == y2) continue;if(uset.count(x1 * 40001 + y2) && uset.count(x2 * 40001 + y1)){int a = abs(x1 - x2);int b = abs(y1 - y2);s = min(s,a * b);}}}return s == 1e9 ? 0 : s;}
};

http://www.ppmy.cn/news/37002.html

相关文章

【办公类-22-02】周计划系列(2)-生成“主题知识”(提取旧docx指定段落的内容,写入EXCLE模板,再次生成新docx)

背景需求&#xff1a; 【办公类-22-01】周计划系列&#xff08;1&#xff09;-生成“信息窗”&#xff08;提取旧docx内容&#xff0c;写入EXCLE模板&#xff0c;再次生成新docx&#xff09; 前一篇介绍了生成”信息窗“的过程&#xff0c;本篇介绍周计划的第2款内容——主题…

操作系统权限维持(十四)之Linux系统- Strace监听SSH来源流量记录密码后门

系列文章 操作系统权限维持&#xff08;一&#xff09;之Windows系统-粘贴键后门 操作系统权限维持&#xff08;二&#xff09;之Windows系统-克隆账号维持后门 操作系统权限维持&#xff08;三&#xff09;之Windows系统-启动项维持后门 操作系统权限维持&#xff08;四&…

ElasticSearch 索引创建

准备工作 在开始创建索引之前&#xff0c;您需要安装Elasticsearch并启动Elasticsearch服务器。您还需要使用一个REST客户端&#xff0c;例如Kibana或Postman&#xff0c;以便与Elasticsearch进行交互。 创建一个索引 要创建Elasticsearch索引&#xff0c;请执行以下步骤&am…

Linux进程控制-3

本片作为进程控制的最后一篇博客&#xff0c;来讲述进程控制中的最后一模块&#xff1a;程序替换的内容。 目录 程序替换 1.内容 2.接口 2.1execve 2.2execv 2.3execvp 2.4execl 2.5execlp 2.6execle 程序替换 1.内容 在真正了解程序替换之前&#xff0c;我们首先…

Java云电子病历系统源码,提供电子病历在线制作、管理和使用的一体化电子病历

这是一套SaaS模式Java版云HIS系统的子系统云电子病历系统源码&#xff0c;本系统采用前后端分离模式开发和部署&#xff0c;支持电子病历四级。 文末获取源码联系&#xff01; 本电子病历系统主要为医院住院部提供医疗记录依据&#xff0c;协助医务人员在医疗活动过程中通过信…

蓝桥杯嵌入式--实战模拟题

前言在蓝桥杯省赛举办之前&#xff0c;学校组织了一场模拟赛&#xff0c;基于第十三届的省赛题&#xff0c;但是难度略高于省赛&#xff0c;这篇博客记录一下解题的过程&#xff0c;其思路可供大家参考。详细工程目前先联系我获取。题目详情实现思路分析花个十几分钟把题目好好…

Linux常用文件系统简述

Linux操作系统支持多种类型的文件系统&#xff0c;在这里我将简要介绍几种常见的Linux文件系统。1. EXT4EXT4是最为常用&#xff0c;最早和稳定的Linux文件系统之一&#xff0c;它是EXT3文件系统的升级版。EXT4采用了更高效的方式组织磁盘空间&#xff0c;支持更大的分区和更高…

2022年业绩逆势增长,“要强”蒙牛再创蒙牛

2022年是蒙牛“再造一个新蒙牛”五年计划的第二年&#xff0c;也是乳企赛道疫情以来最为艰难的一年&#xff0c;这一年里&#xff0c;不仅有疫情多点散发所带来的线下渠道不畅&#xff0c;也有原材料价格飙涨所导致的成本高企。 在这种形势下&#xff0c;蒙牛尽管遭遇多重困难…