文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给定在 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 <= 500
0 <= points[i][0] <= 40000
0 <= points[i][1] <= 40000
所有的点都是不同的。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-area-rectangle
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 枚举4个顶点是会超时的
  • 枚举对角线组合,然后在哈希里检查另外两个顶点是否都存在
class Solution {public:int minAreaRect(vector<vector<int>>& points) {int i, j, area = INT_MAX, s;unordered_map<int, unordered_set<int>> m;for(auto& p : points)m[p[0]].insert(p[1]);for(i = 0; i < points.size(); ++i)for(j = i+1; j < points.size(); ++j){if(points[i][0]==points[j][0] || points[i][1]==points[j][1]|| !m[points[i][0]].count(points[j][1]) || !m[points[j][0]].count(points[i][1]))//i,j作为对角线,另外两点不存在continue;s = abs(points[i][0]-points[j][0])*abs(points[i][1]-points[j][1]);if(s < area)area = s;}return area==INT_MAX ? 0 : area;}
};

1316 ms 18.8 MB

  • 根据题目的数据范围,哈希采用40001进制数,压缩为一个int,加快运行速度
class Solution {public:int minAreaRect(vector<vector<int>>& points) {int i, j, area = INT_MAX, s;unordered_set<int> m;for(auto& p : points)m.insert(p[0]*40001+p[1]);for(i = 0; i < points.size(); ++i)for(j = i+1; j < points.size(); ++j){if(points[i][0]==points[j][0] || points[i][1]==points[j][1]|| !m.count(points[i][0]*40001+points[j][1]) || !m.count(points[j][0]*40001+points[i][1]))//i,j作为对角线,另外两点不存在continue;s = abs(points[i][0]-points[j][0])*abs(points[i][1]-points[j][1]);if(s < area)area = s;}return area==INT_MAX ? 0 : area;}
};

832 ms 17.1 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 939. 最小面积矩形(哈希)相关推荐

  1. leetcode最小面积_LeetCode—— 939. 最小面积矩形(JavaScript)

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

  2. LeetCode 963. 最小面积矩形 II

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

  3. [Leetcode 963] 最小面积矩形 II

    题意: 平面坐标系中一些点,找四个拼成面积在最小的矩形. 思路: 长方形判定定理:对角线相等,且互相平分的四边形是矩形. 首先平方枚举两个点所构成的所有线段. 对于这些线段把它们当做长方形的一条对角线 ...

  4. 939. 最小面积矩形

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

  5. Leetcode 963. 最小面积矩形 II 解题思路及C++实现

    解题思路: 这道题目的难点在于如何判断一个矩形,网上也有很多方法. 对于给定的四个点,可以判断其四个顶点是否是直角,或者先求出中心点,矩形中每个点到中心点的距离是相等的. 下面给出的程序的逻辑是:暴力 ...

  6. leetcode最小面积_Code Review Swift 算法题: 最小面积矩形  Leetcode 的动人之处

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

  7. Leetcode 939:最小面积矩形(最详细的解法!!!)

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

  8. LeetCode 539. 最小时间差(哈希)

    1. 题目 给定一个 24 小时制(小时:分钟)的时间列表,找出列表中任意两个时间的最小时间差并已分钟数表示. 示例 1: 输入: ["23:59","00:00&quo ...

  9. UVA10173(求凸包的面积最小外接矩形)

    题目:10173 - Smallest Bounding Rectangle 求凸包的最小外接矩形的面积. 思路: 旋转卡壳 给定点集S,求S的最小覆盖矩形 最小覆盖矩形的四条边上,其中一条边有至少两 ...

最新文章

  1. apache2.2.25+mod_jk-apache-2.2.2.so+apache-tomcat-7.0.56集群
  2. 决策树Decision Tree
  3. Arduino可穿戴教程认识ArduinoIDE
  4. 盘点VS2015 预览版的5个新特性
  5. ios NSComparator 三种枚举类型
  6. Android从入门到进阶之高级控件
  7. jdk 1.8 字符串+_JDK 9/10/11:Java字符串上+ =的副作用
  8. 安排计算机网络技术专业去电子厂专业对口吗,计算机网络技术专业好点的学校有哪些?...
  9. crx文件里面的html文件,javascript – Chrome扩展程序:在crx文件中打开html,标签上没有图标...
  10. Java新职篇:声明一个变量
  11. 最小生成树(Prim算法+Kruskal算法)
  12. Ubuntu常用软件推荐,图文详细说明及下载
  13. PS放大图片而不模糊的操作方法
  14. LINE登录手机后怎样更换别个账号_2020年全国青少年禁毒知识竞赛在线答疑来了(附登录入口)...
  15. 水体浮游植物叶绿素a含量的测定
  16. A Survey on Deep Learning Techniques for Stereo-based Depth Estimation论文阅读
  17. python非线性可分支持向量机模型(实现iris分类)
  18. 唯品会密码JS解密与python登录!
  19. ConvE,知识图谱嵌入(KGE)论文复现(Ubuntu 20.04)
  20. 按关键字采集淘特商品列表API接口H5

热门文章

  1. 计算机基础的函数公式,大学计算机基础 excle 公式与函数
  2. 小android模拟器,小姚Android模拟器工作室版本v6.2.7.0正式版
  3. 三位数的茎叶图怎么看_贝德玛化妆品生产日期怎么看?贝德玛化妆品保质期怎么看?...
  4. 数据结构探险——线性表篇
  5. 《统计学习方法》(李航)读书笔记(转)
  6. 初识设计模式(装饰者模式)
  7. 代码实现:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。...
  8. LockSupport的park和unpark
  9. sql server :distinct 与order by 一起使用要注意
  10. 如何将两个DateTimePicker的日期和时间组合成一个值