mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-09-04 23:11:41 +08:00
国外版
This commit is contained in:
54
算法题(国外版)/number-of-orders-in-the-backlog.html
Normal file
54
算法题(国外版)/number-of-orders-in-the-backlog.html
Normal file
@@ -0,0 +1,54 @@
|
||||
<p>You are given a 2D integer array <code>orders</code>, where each <code>orders[i] = [price<sub>i</sub>, amount<sub>i</sub>, orderType<sub>i</sub>]</code> denotes that <code>amount<sub>i</sub></code><sub> </sub>orders have been placed of type <code>orderType<sub>i</sub></code> at the price <code>price<sub>i</sub></code>. The <code>orderType<sub>i</sub></code> is:</p>
|
||||
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li><code>0</code> if it is a batch of <code>buy</code> orders, or</li>
|
||||
|
||||
<li><code>1</code> if it is a batch of <code>sell</code> orders.</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
<p>Note that <code>orders[i]</code> represents a batch of <code>amount<sub>i</sub></code> independent orders with the same price and order type. All orders represented by <code>orders[i]</code> will be placed before all orders represented by <code>orders[i+1]</code> for all valid <code>i</code>.</p>
|
||||
|
||||
|
||||
|
||||
<p>There is a <strong>backlog</strong> that consists of orders that have not been executed. The backlog is initially empty. When an order is placed, the following happens:</p>
|
||||
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li>If the order is a <code>buy</code> order, you look at the <code>sell</code> order with the <strong>smallest</strong> price in the backlog. If that <code>sell</code> order's price is <strong>smaller than or equal to</strong> the current <code>buy</code> order's price, they will match and be executed, and that <code>sell</code> order will be removed from the backlog. Else, the <code>buy</code> order is added to the backlog.</li>
|
||||
|
||||
<li>Vice versa, if the order is a <code>sell</code> order, you look at the <code>buy</code> order with the <strong>largest</strong> price in the backlog. If that <code>buy</code> order's price is <strong>larger than or equal to</strong> the current <code>sell</code> order's price, they will match and be executed, and that <code>buy</code> order will be removed from the backlog. Else, the <code>sell</code> order is added to the backlog.</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
<p>Return <em>the total <strong>amount</strong> of orders in the backlog after placing all the orders from the input</em>. Since this number can be large, return it <strong>modulo</strong> <code>10<sup>9</sup> + 7</code>.</p>
|
||||
|
||||
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>Example 1:</strong></p>
|
||||
|
||||
<img alt="" src="https://assets.leetcode.com/uploads/2021/03/11/ex1.png" style="width: 450px; height: 479px;" />
|
||||
|
||||
<pre>
|
||||
|
||||
<strong>Input:</strong> orders = [[10,5,0],[15,2,1],[25,1,1],[30,4,0]]
|
||||
|
||||
<strong>Output:</strong> 6
|
||||
|
||||
<strong>Explanation:</strong> Here is what happens with the orders:
|
||||
|
||||
- 5 orders of type buy with price 10 are placed. There are no sell orders, so the 5 orders are added to the backlog.
|
||||
|
||||
- 2 orders of type sell with price 15 are placed. There are no buy orders with prices larger than or equal to 15, so the 2 orders are added to the backlog.
|
||||
|
Reference in New Issue
Block a user