【LeetCode每日一题】391. 完美矩形【困难】

给你一个数组 rectangles ,其中 rectangles[i] = [xi, yi, ai, bi] 表示一个坐标轴平行的矩形。这个矩形的左下顶点是 (xi, yi) ,右上顶点是 (ai, bi) 。

如果所有矩形一起精确覆盖了某个矩形区域,则返回 true ;否则,返回 false 。

  示例 1: alt

输入:rectangles = [[1,1,3,3],[3,1,4,2],[3,2,4,4],[1,3,2,4],[2,3,3,4]] 输出:true 解释:5 个矩形一起可以精确地覆盖一个矩形区域。

示例 2: alt

输入:rectangles = [[1,1,2,3],[1,3,2,4],[3,1,4,2],[3,2,4,4]] 输出:false 解释:两个矩形之间有间隔,无法覆盖成一个矩形。

示例 3: alt

输入:rectangles = [[1,1,3,3],[3,1,4,2],[1,3,2,4],[3,2,4,4]] 输出:false 解释:图形顶端留有空缺,无法覆盖成一个矩形。

示例 4: alt

输入:rectangles = [[1,1,3,3],[3,1,4,2],[1,3,2,4],[2,2,4,4]] 输出:false 解释:因为中间有相交区域,虽然形成了矩形,但不是精确覆盖。  

提示:

1 <= rectangles.length <= 2 * 104 rectangles[i].length == 4 -105 <= xi, yi, ai, bi <= 105

题解: 这道题做的时候,就想到了应该和矩形的面积有关,并且和矩形四个角的顶点有关。但是官方题解统计顶点出现次数的做法是我没有想到的,感觉十分的巧妙,思路也很清晰。 alt

//mycode
class Solution {
public:
    bool isRectangleCover(vector<vector<int>>& rectangles) {
        long long area = 0;
        map<pair<int, int>, int> m;
        int minX = rectangles[0][0], minY = rectangles[0][1], maxX = rectangles[0][2], maxY = rectangles[0][3];
        for(auto e: rectangles){
            int x = e[0], y = e[1], a = e[2], b = e[3];
            area += (long long)(b - y) * (a - x);
            m[{x, y}]++;
            m[{a, b}]++;
            m[{x, b}]++;
            m[{a, y}]++;
            minX = min(minX, x);
            minY = min(minY, y);
            maxX = max(maxX, a);
            maxY = max(maxY, b);
        }
        if(area != (long long)(maxY - minY) * (maxX - minX)) return false;
        if(m[{minX, minY}] != 1 || m[{minX, maxY}] != 1 || m[{maxX, minY}] != 1 || m[{maxX, maxY}] != 1) return false;
        m.erase({minX, minY});
        m.erase({minX, maxY});
        m.erase({maxX, minY});
        m.erase({maxX, maxY});
        map<pair<int, int>, int>::iterator iter;
        for(iter = m.begin(); iter != m.end(); iter++){
            int x = iter -> first.first;
            int y = iter -> first.second;
            if(m[{x, y}] == 1 || m[{x, y}] == 3) return false;
        }
        return true;
    }
};

alt

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务