1
var tilingRectangle = function (n, m) {
2
const queue = [[new Array(n).fill(0), 0]];
3
while (true) {
4
const [curr, numSquares] = queue.shift();
5
let min = { height: Infinity, start: Infinity, end: Infinity };
6
for (let i = 0; i < n; i++) {
7
if (curr[i] < min.height) {
8
min.height = curr[i];
9
min.start = i;
10
min.end = i + 1;
11
} else if (curr[i] === min.height && min.end === i) {
12
min.end++;
13
}
14
}
15
if (min.height === m) return numSquares;
16
const largestSquare = Math.min(m - min.height, min.end - min.start);
17
for (let sqWidth = largestSquare; sqWidth; sqWidth--) {
18
const next = curr.slice();
19
for (let i = min.start; i < min.start + sqWidth; i++) {
20
next[i] += sqWidth;
21
}
22
queue.push([next, numSquares + 1]);
23
}
24
}
25
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0