Leetcode 939:最小面积矩形

题目描述

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

解题思路

每次选择两个点看作对角线上的点,然后查找另外两个点是否在points中,如果在,计算构成举行的面积,否则不做处理;一开始对于查找另外两个点没有想到好的解决办法,时间复杂度O(N)去查找,参考评论区大佬的解决办法,使用set实现O(logN)时间复杂度查找(获得的小小启示是,对于优化O(N)到O(logN)的问题,可以考虑使用set或map辅助)

int minAreaRect(vector>& points) {
        set st;
        int minArea = INT_MAX;
        int trans = 40000;
        int len = points.size();
        for(int i=0;i

你可能感兴趣的:(Leetcode 939:最小面积矩形)