[哈希] leetcode 939 Minimum Area Rectangle

problem:https://leetcode.com/problems/minimum-area-rectangle/

        使用哈希表,选取任意两点(视为矩形的两个对角),查找另外两个点是否存在,如果存在则更新最小面积矩阵。

        时间复杂度O(N^2)。

class Solution {
public:
    int minAreaRect(vectorint>>& points) {
        int n = points.size();
        int res = INT_MAX;
        unordered_map<int,unordered_set<int>> m;
        for(int i = 0;i < n;i++)
        {
            m[points[i][0]].insert(points[i][1]);
        }
        
        for(int i = 0;i < n; i++)
        {
            for(int j = i + 1;j < n; j++)
            {
                int x0 = points[i][0];
                int y0 = points[i][1];
                
                int x1 = points[j][0];
                int y1 = points[j][1];
                
                if(x0 == x1 || y0 == y1)
                {
                    continue;
                }
                
                if(m[x0].find(y1) != m[x0].end() && m[x1].find(y0) != m[x1].end())
                {
                    res = min(res, abs((y1 - y0) * (x1 - x0)));
                }
            }
        }
        
        return res == INT_MAX ? 0 : res;
        
    }
};

 

转载于:https://www.cnblogs.com/fish1996/p/11266283.html

你可能感兴趣的:([哈希] leetcode 939 Minimum Area Rectangle)