deliveries
and orders
. Each list contains integers representing the quantity of items delivered to or ordered from the warehouse on each day. Your task is to determine the minimum number of days required to fulfill all the orders, assuming that you can only use the inventory that has been delivered up to each day, and you cannot fulfill an order with future deliveries.
Key constraints include:
deliveries
list (let's call it i
) and one for the orders
list (j
).inventory
to keep track of the current stock.deliveries
list day by day:
inventory
.inventory >= orders[j]
), subtract the order from inventory
and move to the next order (j += 1
).i
) it took to fulfill all orders.deliveries = [5, 3, 7, 2]
orders = [4, 2, 6, 3]
def minDaysToFulfillOrders(deliveries, orders):
inventory = 0
order_idx = 0
n = len(deliveries)
for day in range(n):
inventory += deliveries[day]
while order_idx < len(orders) and inventory >= orders[order_idx]:
inventory -= orders[order_idx]
order_idx += 1
if order_idx == len(orders):
return day + 1
return -1 # If not possible
int minDaysToFulfillOrders(vector<int>& deliveries, vector<int>& orders) {
int inventory = 0, order_idx = 0, n = deliveries.size();
for (int day = 0; day < n; ++day) {
inventory += deliveries[day];
while (order_idx < orders.size() && inventory >= orders[order_idx]) {
inventory -= orders[order_idx];
order_idx++;
if (order_idx == orders.size()) return day + 1;
}
}
return -1; // If not possible
}
public int minDaysToFulfillOrders(int[] deliveries, int[] orders) {
int inventory = 0, orderIdx = 0, n = deliveries.length;
for (int day = 0; day < n; day++) {
inventory += deliveries[day];
while (orderIdx < orders.length && inventory >= orders[orderIdx]) {
inventory -= orders[orderIdx];
orderIdx++;
if (orderIdx == orders.length) return day + 1;
}
}
return -1; // If not possible
}
function minDaysToFulfillOrders(deliveries, orders) {
let inventory = 0, orderIdx = 0;
for (let day = 0; day < deliveries.length; day++) {
inventory += deliveries[day];
while (orderIdx < orders.length && inventory >= orders[orderIdx]) {
inventory -= orders[orderIdx];
orderIdx++;
if (orderIdx === orders.length) return day + 1;
}
}
return -1; // If not possible
}