391 Perfect Rectangle 完美矩形
有 N 个与坐标轴对齐的矩形, 其中 N > 0, 判断它们是否能精确地覆盖一个矩形区域。
每个矩形用左下角的点和右上角的点的坐标来表示。例如, 一个单位正方形可以表示为 [1,1,2,2]。 ( 左下角的点的坐标为 (1, 1) 以及右上角的点的坐标为 (2, 2) )。
详见:https://leetcode.com/problems/perfect-rectangle/description/
C++:
class Solution { public: bool isRectangleCover(vector<vector<int>>& rectangles) { unordered_map<string, int> hash; for(auto val: rectangles) { for(int i = 0; i < 4; i++) { string tem = to_string(val[i/2*2])+','+to_string(val[i%2*2+1]); if(hash[tem]&(1<<i)) { return false; } hash[tem] |= (1<<i); } } int cntCorner = 0; for(auto& val: hash) { int sec = val.second; if(!(sec&(sec-1)) && cntCorner++ > 4) { return false; } if((sec&(sec-1)) && !(sec==3||sec==12||sec==5||sec==10||sec==15)) { return false; } } return true; } };
参考:https://blog.csdn.net/qq508618087/article/details/52483625