1
var minHeightShelves = function (books, shelfWidth) {4
for (let i = 0; i < books.length; i++) {5
let remainingWidth = shelfWidth - books[i][0];6
let bookHeight = books[i][1];8
let maxHeight = bookHeight;10
let prevSum = booksArr[i - 1] !== undefined ? booksArr[i - 1] : 0;11
let minSumHeight = bookHeight + prevSum;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;19
prevSum = booksArr[x - 1] !== undefined ? booksArr[x - 1] : 0;21
maxHeight = Math.max(maxHeight, prevBookHeight);23
minSumHeight = Math.min(prevSum + maxHeight, minSumHeight);25
booksArr[i] = minSumHeight;28
return booksArr[books.length - 1];