Filling Bookcase Shelves LeetCode solution in JavaScript

1
var minHeightShelves = function (books, shelfWidth) {
2
let booksArr = [];
3

4
for (let i = 0; i < books.length; i++) {
5
let remainingWidth = shelfWidth - books[i][0];
6
let bookHeight = books[i][1];
7

8
let maxHeight = bookHeight;
9

10
let prevSum = booksArr[i - 1] !== undefined ? booksArr[i - 1] : 0;
11
let minSumHeight = bookHeight + prevSum;
12

13
for (let x = i - 1; x >= 0; x--) {
14
let prevBookWidth = books[x][0];
15
let prevBookHeight = books[x][1];
16
if (remainingWidth - prevBookWidth < 0) break;
17
remainingWidth -= prevBookWidth;
18

19
prevSum = booksArr[x - 1] !== undefined ? booksArr[x - 1] : 0;
20

21
maxHeight = Math.max(maxHeight, prevBookHeight);
22

23
minSumHeight = Math.min(prevSum + maxHeight, minSumHeight);
24
}
25
booksArr[i] = minSumHeight;
26
}
27

28
return booksArr[books.length - 1];
29
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0