Skip to content

Commit 8de0400

Browse files
authored
Create 391-perfect-rectangle.js
1 parent 08395d1 commit 8de0400

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

391-perfect-rectangle.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* @param {number[][]} rectangles
3+
* @return {boolean}
4+
*/
5+
const isRectangleCover = function(rectangles) {
6+
let tls = new Set()
7+
let trs = new Set()
8+
let bls = new Set()
9+
let brs = new Set()
10+
let corner = (x, y) => `${x} ${y}`
11+
for (let [l, b, r, t] of rectangles) {
12+
let tl = corner(t, l)
13+
let tr = corner(t, r)
14+
let bl = corner(b, l)
15+
let br = corner(b, r)
16+
if (tls.has(tl) || trs.has(tr) || bls.has(bl) || brs.has(br)) return false
17+
if (!bls.delete(tl) && !trs.delete(tl)) tls.add(tl)
18+
if (!brs.delete(tr) && !tls.delete(tr)) trs.add(tr)
19+
if (!brs.delete(bl) && !tls.delete(bl)) bls.add(bl)
20+
if (!bls.delete(br) && !trs.delete(br)) brs.add(br)
21+
}
22+
return tls.size === 1 && trs.size === 1 && bls.size === 1 && brs.size === 1
23+
}

0 commit comments

Comments
 (0)