LeetCode939最小面积矩形

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

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

Input

[[1,1],[1,3],[3,1],[3,3],[2,2]]

Output

4

hint

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

题目大意

给许多点找出4个点构成矩形,求最小面积是多少,没有输出0

题目思路

考虑两个对角的点可以确定一个矩形。那么我们枚举两个对角点,再去判断矩形另外两个点是否存在。

枚举复杂度O(n^2)判断是否存在用map O(log(n))

复杂度O(log(n)*n^2) n = 500

下面给出AC代码

class Solution
{
public:
map<pair<int,int>,int>mmp; int getArea(int x1,int y1,int x2,int y2)
{
if(mmp[make_pair(x1,y2)]&&mmp[make_pair(x2,y1)])
{
return (x2-x1)*(y2-y1);
}
else
{
return -1;
}
} int minAreaRect(vector<vector<int>>& points)
{
int f = 0,Min = 0;
for(int i=0; i<points.size(); i++)
mmp[make_pair(points[i][0],points[i][1])]++;
for(int i=0; i<points.size(); i++)
{
for(int j=i+1; j<points.size(); j++)
{
int x1 = points[i][0],x2 =points[j][0],y1 = points[i][1],y2 =points[j][1];
if(x1==x2||y1==y2)
continue;
if(x1>x2&&y1>y2)
{
int area = getArea(x2,y2,x1,y1);
if(area==-1)
continue;
if(f)
Min = min(area,Min);
else
Min = area,f=1;
}
else if(x1<x2&&y1<y2)
{
int area = getArea(x1,y1,x2,y2);
if(area==-1)
continue;
if(f)
Min = min(area,Min);
else
Min = area,f=1;
}
else if(x1<x2&&y1>y2)
{
if(mmp[make_pair(x2,y1)]&&mmp[make_pair(x1,y2)])
{
if(f)
Min = min((y1-y2)*(x2-x1),Min);
else
Min = (y1-y2)*(x2-x1),f=1;
}
}
else
{
if(mmp[make_pair(x2,y1)]&&mmp[make_pair(x1,y2)])
{
if(f)
Min = min((y2-y1)*(x1-x2),Min);
else
Min = (y2-y1)*(x1-x2),f=1;
}
}
}
}
return f?Min:0;
}
};

LeetCode939 最小面积矩形的更多相关文章

  1. [Swift]LeetCode939. 最小面积矩形 | Minimum Area Rectangle

    Given a set of points in the xy-plane, determine the minimum area of a rectangle formed from these p ...

  2. [Swift]LeetCode963. 最小面积矩形 II | Minimum Area Rectangle II

    Given a set of points in the xy-plane, determine the minimum area of any rectangle formed from these ...

  3. UVA10173 Smallest Bounding Rectangle 最小面积矩形覆盖

    \(\color{#0066ff}{题目描述}\) 给定n(>0)二维点的笛卡尔坐标,编写一个程序,计算其最小边界矩形的面积(包含所有给定点的最小矩形). 输入文件可以包含多个测试样例.每个测试 ...

  4. LeetCode 939. Minimum Area Rectangle (最小面积矩形)

    题目标签:HashMap 题目给了我们一组 xy 上的点坐标,让我们找出 能组成矩形里最小面积的那个. 首先遍历所有的点,把x 坐标当作key 存入map, 把重复的y坐标 组成set,当作value ...

  5. Leetcode963. Minimum Area Rectangle II最小面积矩形2

    给定在 xy 平面上的一组点,确定由这些点组成的任何矩形的最小面积,其中矩形的边不一定平行于 x 轴和 y 轴. 如果没有任何矩形,就返回 0. 示例 1: 输入:[[1,2],[2,1],[1,0] ...

  6. BZOJ 1185: [HNOI2007]最小矩形覆盖-旋转卡壳法求点集最小外接矩形(面积)并输出四个顶点坐标-备忘板子

    来源:旋转卡壳法求点集最小外接矩形(面积)并输出四个顶点坐标 BZOJ又崩了,直接贴一下人家的代码. 代码: #include"stdio.h" #include"str ...

  7. matlab练习程序(最小包围矩形)

    又是计算几何,我感觉最近对计算几何上瘾了. 当然,工作上也会用一些,不过工作上一般直接调用boost的geometry库. 上次写过最小包围圆,这次是最小包围矩形,要比最小包围圆复杂些. 最小包围矩形 ...

  8. opencv —— boundingRect、minAreaRect 寻找包裹轮廓的最小正矩形、最小斜矩形

    寻找包裹轮廓的最小正矩形:boundingRect 函数 返回矩阵应满足:① 轮廓上的点均在矩阵空间内.② 矩阵是正矩阵(矩形的边界与图像边界平行). Rect boundingRect(InputA ...

  9. L3-021 神坛(极角排序求三角形最小面积)

    在古老的迈瑞城,巍然屹立着 n 块神石.长老们商议,选取 3 块神石围成一个神坛.因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好.特殊地,如果有两块神石坐标相同,或者三块神石共线,神坛的面 ...

随机推荐

  1. TCP报文指针解释,IP地址

    三次握手TCP报文指针内容: 1.URG:紧急指针,当URG=1,表明紧急指针字段有效,告诉系统报文有紧急内容. 2.ACK:  确认指针,当ACK=1,确认号字段有效. 3.PSH:推送指针,当两个 ...

  2. setInterval循环设置并传入不同的参数

    var taskId; var __sto = setInterval; window.setInterval = function(callback,timeout,param){ var args ...

  3. 有容云-PPT | 当微服务遇见容器

    编者注: 本文为10月29日有容云高级技术顾问龙淼在Docker Live时代线下系列-广州站中演讲的PPT,本次线下沙龙为有容云倾力打造Docker Live时代系列主题线下沙龙,每月一期畅聊容器技 ...

  4. Echarts图表插件(4.x版本)使用(二、带分类筛选的多个图表/实例化多个ECharts,以关系图/force为例)

    导读 如果想在一个页面里实例化带分类筛选的多个Echarts该怎么做呢? 曾探讨了带分类选择的关系图显示为自定义图片的需求实现,传送门ECharts图表插件(4.x版本)使用(一.关系图force节点 ...

  5. CentOS7 安装 单机 Mysql

    1.解压文件 [root@centos3 ~]# tar -zxvf mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz -C /usr/local/ 2.重命名 [ ...

  6. Angualr6表单提交验证并跳转

    在Angular6中,使用NG-ZRROR作为前端开发框架,在进行表单开发时遇到了一些问题,最后解决了,在此记录. 1.表单构造: 引入forms: import { FormGroup, FormB ...

  7. 简洁明了的Noip考场策略 / 平时做题也适用

    1.选择策略: 评估的标准得分的难度不是AC的难度 2.思考问题: 怀疑的眼光审视自己 3.写代码前: 想想可不可以换一种代码实现会好写很多 把自己的思路再理一遍,可以写到纸上,记下来大致关键顺序 4 ...

  8. 利用jQuery中的serialize方法大量获取页面中表单的数据,发送的服务器

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  9. 跟着大彬读源码 - Redis 10 - 对象编码之整数集合

    [TOC] 整数集合是 Redis 集合键的底层实现之一.当一个集合只包含整数值元素,并且元素数量不多时,Redis 就会使用整数集合作为集合键的底层实现. 1 整数集合的实现 整数集合是 Redis ...

  10. 带你剖析WebGis的世界奥秘----点和线的世界

    前言 昨天写了好久的博文我没保存,今天在来想继续写居然没了,气死人啊这种情况你们见到过没,所以今天重新写,我还是切换到了HTML格式的书写上.废话不多说了,我们现在就进入主题,上周我仔细研究了WebG ...