Leetcode 391. Perfect Rectangle

原创 2016年08月29日 22:17:34

解题思想

这道题是说给了一堆小矩形的坐标(左下角和右上角围成的),问其能否组合成一个完美的矩形(刚刚好,不多,不少,不交叉重复)。

核心思想就是:能够正好围成一个矩形的情况就是:
有且只有:

  • 最左下/最左上/最右下/最右上的四个点只出现过一次,其他肯定是出现两次和四次(保证完全覆盖)
  • 上面四个点围成的面积,正好等于所有子矩形的面积之和(保证不重复)

Leetcode代码收录,求粉求星星。

class Solution(object):
    def isRectangleCover(self, rectangles):
        """
        :type rectangles: List[List[int]]
        :rtype: bool
        """
        def recordCorner(point):
            if point in corners:
                corners[point] += 1
            else:
                corners[point] = 1

        corners = {}
        area =  0
        left = min(x[0] for x in rectangles)
        bottom = min(x[1] for x in rectangles)
        right = max(x[2] for x in rectangles)
        top = max(x[3] for x in rectangles)

        for sub in rectangles:
            ax, ay, bx, by = sub[:]
            area += (bx-ax)*(by-ay)
            map(recordCorner, [(ax, ay), (bx, by), (ax, by), (bx, ay)])

        if area != (top-bottom)*(right-left): return False

        big_four = [(left,bottom),(right,top),(left,top),(right,bottom)]

        for bf in big_four:                         # check corners of big rectangle
            if bf not in corners or corners[bf] != 1:
                return False

        for key in corners:                         # check existing "inner" points
            if corners[key]%2 and key not in big_four:
                return False

        return True
版权声明:本文为博主原创文章,转载请注明出处。

Leetcode 391. Perfect Rectangle 完美矩形 解题报告

1 解题思想这道题是说给了一堆小矩形的坐标(左下角和右上角围成的),问其能否组合成一个完成的矩形。这题肯定不能暴力开辟一个数组去做,或者其他类似思想。。看了下Leetcode的讨论,最终总结出如下的做...
  • MebiuW
  • MebiuW
  • 2016年08月29日 16:04
  • 3712

Leetcode 391. Perfect Rectangle

想切题, 开个博客督促下自己。 但最近wrong answer的好心烦, 代码贴出来, 谁有空可以帮我挑挑bug。 题目: Given N axis-aligned rectangles wher...

【LeetCode】391. Perfect Rectangle

题目描述: Given N axis-aligned rectangles where N > 0, determine if they all together form an exact co...

[leetcode] 391. Perfect Rectangle 解题报告

题目链接:https://leetcode.com/problems/perfect-rectangle/ Given N axis-aligned rectangles where N > 0,...

leetcode 391. Perfect Rectangle 完美矩形的寻找 + 一个很笨的却很直接的方法

Given N axis-aligned rectangles where N > 0, determine if they all together form an exact cover of a...

LeetCode Largest Rectangle in Histogram

  • 2015年06月22日 23:25
  • 2.67MB
  • 下载

LeetCode——Perfect Squares

题目描述: 将数字n,分解成k个平方数之和。如12 = 4 + 4 + 4,13 = 9 + 4。求k的最小值。         题目解法: 初读题目,发现如果n本身就是平方数最完美不过了,这样...

279. Perfect Squares-Leetcode(关于DP的再深入研究)

先上题目: Given a positive integer n, find the least number of perfect square numbers (for example, 1,...

leetcode_279. Perfect Squares

leetcode_279. Perfect Squares

leetcode谷歌面试题279. Perfect Squares

无权图广搜谷歌面试题
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Leetcode 391. Perfect Rectangle
举报原因:
原因补充:

(最多只允许输入30个字)