Leet Code Daily 2024-07-31 - Filling Bookcase Shelves
Solution
DP.
Code
class Solution {
public:
int minHeightShelves(vector<vector<int>>& books, int shelfWidth) {
const int n = books.size();
vector<int> f(n + 1, 0);
for (int i = 1; i <= n; i++) {
f[i] = INT_MAX;
for (int j = i - 1, w = 0, h = 0; j >= 0; j--) {
w += books[j][0];
h = max(h, books[j][1]);
if (w > shelfWidth) {
break;
}
f[i] = min(f[i], f[j] + h);
}
}
return f[n];
}
};