Drill

ProblemsJava › production

How long to clear the order book

mediumproductionArraysGreedySimulationJava

Each order has to be made in one piece on a single day, and the plant has a fixed capacity per day. Orders are taken in the order they were received.

daysToClear(orders: list<int>, dailyCapacity: int) → int

Java needs a compiler and Drill does not host one yet, so this page is the reference rather than an exercise: the problem, worked examples, and the solution in full. To type it out, the same problem runs in Python.

Solve it in Python →

Where you start

int daysToClear(List<Integer> orders, int dailyCapacity) {
    
}

Worked examples

CallResult
daysToClear(Main.<Integer>ls(3, 4, 5), 7)2
daysToClear(Main.<Integer>ls(7, 7), 7)2
daysToClear(Main.<Integer>ls(8), 7)-1
daysToClear(Main.<Integer>ls(1, 1, 1), 10)1

Hint

Track how much of today is left. When the next order does not fit, start a new day rather than splitting it.

Reference solution in Java
int daysToClear(List<Integer> orders, int dailyCapacity) {
    if (dailyCapacity <= 0) return -1;
    int days = 0, left = 0;
    for (int o : orders) {
        if (o > dailyCapacity) return -1;
        if (o > left) { days++; left = dailyCapacity; }
        left -= o;
    }
    return days;
}

The same problem in another language

More production problems in Java