1. 程式人生 > >391 Perfect Rectangle 完美矩形

391 Perfect Rectangle 完美矩形

精確 cor 正方形 tps second 矩形 des val pub

有 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

391 Perfect Rectangle 完美矩形