आसान 0 हल किए गए 0% स्वीकृति

Checkout Facade

Hide stock checks and price totals behind one simple checkout call.

आप क्या सीखेंगे

  • Hide several subsystems behind one call
  • Check stock before charging
  • Combine repeated cart lines per item

समस्या

अनुवाद दिखाएँ

The facade pattern gives a simple entry point to a complicated subsystem. A shop's checkout call hides two subsystems: the inventory and the price list.

Items are numbered 0 to n − 1. stock[i] is how many units of item i are available and prices[i] is its price. The cart is a list of [item, quantity] lines; the same item may appear on several lines.

checkout(stock, prices, cart) must:

  1. Check the inventory: if the total quantity of any item in the cart is greater than its stock, the order fails.
  2. Otherwise return the total price of the cart.

Implement checkout_facade(stock, prices, cart).

Input

stock, prices: n values each.

cart: [item, quantity] lines.

Output

Return the total price, or -1 if any item does not have enough stock.

सीमाएँ

1 ≤ n ≤ 1,000

0 ≤ stock[i], prices[i] ≤ 100,000; 0 ≤ cart lines ≤ 1,000; 1 ≤ quantity ≤ 1,000

उदाहरण

उदाहरण 1
इनपुट:
cart = [
    [0, 2],
    [2, 4]
]
stock = [5, 2, 10]
prices = [3, 20, 1]

अपेक्षित आउटपुट:
expected = 10
इनपुट:
std::vector<std::vector<long long>> cart = {
    {0, 2},
    {2, 4}
};
std::vector<long long> stock = {5, 2, 10};
std::vector<long long> prices = {3, 20, 1};

अपेक्षित आउटपुट:
long long expected = 10;
इनपुट:
long[][] cart = new long[][] {
    new long[] {0, 2},
    new long[] {2, 4}
};
long[] stock = new long[] {5, 2, 10};
long[] prices = new long[] {3, 20, 1};

अपेक्षित आउटपुट:
long expected = 10;

व्याख्या

Both items are in stock. 2 × 3 + 4 × 1 = 10.

उदाहरण 2
इनपुट:
cart = [
    [1, 1],
    [1, 2]
]
stock = [5, 2]
prices = [3, 20]

अपेक्षित आउटपुट:
expected = -1
इनपुट:
std::vector<std::vector<long long>> cart = {
    {1, 1},
    {1, 2}
};
std::vector<long long> stock = {5, 2};
std::vector<long long> prices = {3, 20};

अपेक्षित आउटपुट:
long long expected = -1;
इनपुट:
long[][] cart = new long[][] {
    new long[] {1, 1},
    new long[] {1, 2}
};
long[] stock = new long[] {5, 2};
long[] prices = new long[] {3, 20};

अपेक्षित आउटपुट:
long expected = -1;

व्याख्या

Item 1 appears twice for a total of 3 units, but only 2 are in stock, so the order fails: -1.

कैसे हल करें

पहले खुद कोशिश करें, फिर एक-एक करके संकेत खोलें।

संकेत 1

Add up the quantity of each item over all cart lines first.

संकेत 2

Compare those totals with the stock before computing any price.

संकेत 3

If any item is short, return -1 straight away.

अपेक्षित जटिलता

O(n + cart lines) time, O(n) extra space

संदर्भ

यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।

दूसरों से सीखें

समुदाय समाधान

अभी तक कोई प्रकाशित समाधान नहीं। पहला साझा करने के लिए इस चुनौती को हल करें।