-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathperfectRectangle.py
More file actions
30 lines (28 loc) · 998 Bytes
/
perfectRectangle.py
File metadata and controls
30 lines (28 loc) · 998 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
# Source: https://leetcode.com/problems/perfect-rectangle/
# Author: Miao Zhang
# Date: 2021-02-07
class Solution:
def isRectangleCover(self, rectangles: List[List[int]]) -> bool:
left = float('inf')
right = float('-inf')
top = float('-inf')
bottom = float('inf')
corners = set()
area = 0
for rec in rectangles:
p1 = (rec[0], rec[1])
p2 = (rec[2], rec[1])
p3 = (rec[2], rec[3])
p4 = (rec[0], rec[3])
area += (p3[0] - p1[0]) * (p3[1] - p1[1])
for p in [p1, p2, p3, p4]:
if p in corners:
corners.remove(p)
else:
corners.add(p)
if len(corners) != 4: return False
corlist = list(corners)
corlist.sort(key = lambda x: (x[0], x[1]))
return area == (corlist[-1][0] - corlist[0][0]) * (corlist[-1][1] - corlist[0][1])