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
}