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. js实现字符串转JSON格式

    在浏览器前端实现字符串转JSON格式,有多种方法,总结如下: 方法1. js函数,eval() 语法: var obj = eval ("(" + txt + ")&qu ...

  2. 【JDK】JDK源码分析-ArrayList

    概述 ArrayList 是 List 接口的一个实现类,也是 Java 中最常用的容器实现类之一,可以把它理解为「可变数组」. 我们知道,Java 中的数组初始化时需要指定长度,而且指定后不能改变. ...

  3. 聊一聊Java的枚举enum

    一. 什么是枚举 枚举是一种数据类型,具有集合的一些特点,可以存放多个元素,但存储对象有限且固定,枚举也有比较常见的使用场景,如我们需要表达性别(男.女),颜色(红.黄.蓝),星期(星期一.星期二.. ...

  4. Java内存模型的基础

    Java内存模型的基础 并发编程模型的两个关键问题 在并发编程中,需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体).通信是指线程之间以何种机制来交换信息.在 ...

  5. 学好C/C++编程,走遍天下都不怕

    C++这门语言从诞生到今天已经经历了将近30个年头.不可否认,它的学习难度都比其它语言较高.而它的学习难度,主要来自于它的复杂性.现在C++的使用范围比以前已经少了很多,java.C#.python等 ...

  6. JavaFX OnMouseClick

    在JavaFX开发环境中,遇到一些坑是难免的,而且资料少得可怜! 先说一下我遇到的问题 : 只是一个点击事件而已 : 首先我有这么个界面 : 接下来呢 ? 我需要点击右上角的X,然后显示遮罩,弹出对话 ...

  7. hashCode和equals的区别

    关注公众号,大家可以在公众号后台回复“博客园”,免费获得作者 Java 知识体系/面试必看资料. 有面试官会问:你重写过 hashcode 和 equals 么,为什么重写equals时必须重写has ...

  8. 【游记】NOIP2019前传

    声明 我的游记是一个完整的体系,如果没有阅读过往届文章,阅读可能会受到障碍. ~~~上一篇游记的传送门~~~ 前言 比完赛后,我沉浸在胜利中长达半个月,而后才清醒过来,意识到自己需要为NOIP2019 ...

  9. Spring入门编程问题集锦Top10

    我写的一篇文章,希望对spring初学者有所帮助: 1.如何学习Spring? 你可以通过下列途径学习spring: ①. spring下载包中doc目录下的MVC-step-by-step和samp ...

  10. 转载 | SVG向下兼容优雅降级方法

    本文引自:http://www.zhangxinxu.com/wordpress/2013/09/svg-fallbacks/ 1.svg image标签降级技术 <svg width=&quo ...