Copy Books
ID: 437; medium; 书籍复印
Solution 1 (Java)
public class Solution {
/**
* @param pages: an array of integers
* @param k: An integer
* @return: an integer
*/
public int copyBooks(int[] pages, int k) {
if (pages == null || pages.length == 0 || k <= 0)
return 0;
int left = 0, right = Integer.MAX_VALUE;
while (left + 1 < right) {
int mid = left + (right - left) / 2;
if (isTimeFeasible(pages, k, mid)) {
right = mid;
} else {
left = mid;
}
}
return isTimeFeasible(pages, k, left) ? left : right;
}
private boolean isTimeFeasible(int[] pages, int k, int time) {
int numOfCopiers = 0, remain = 0;
for (int page : pages) {
if (page > time) return false;
if (page > remain) {
numOfCopiers++;
remain = time;
}
remain -= page;
}
return numOfCopiers <= k;
}
}Notes
Solution 2 (Java)
Notes
Last updated