[哈希] leetcode 939 Minimum Area Rectangle
problem:https://leetcode.com/problems/minimum-area-rectangle/
使用哈希表,选取任意两点(视为矩形的两个对角),查找另外两个点是否存在,如果存在则更新最小面积矩阵。
时间复杂度O(N^2)。
class Solution { public: int minAreaRect(vector<vector<int>>& 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; } };

浙公网安备 33010602011771号