LeetCode 5710 積壓訂單中的訂單總數

2021-10-22 18:49:31 字數 2460 閱讀 5020

題目鏈結

給你乙個二維整數陣列 orders ,其中每個 orders[i] = [price_i, amount_i, ordertype_i] 表示有 amount_i 筆型別為 ordertype_i 、**為 price_i 的訂單。

訂單型別 ordertypei 可以分為兩種:

存在由未執行訂單組成的 積壓訂單 。積壓訂單最初是空的。提交訂單時,會發生以下情況:

如果該訂單是一筆採購訂單 buy ,則可以檢視積壓訂單中** 最低 的銷售訂單 sell 。如果該銷售訂單 sell 的** 低於或等於 當前採購訂單 buy 的**,則匹配並執行這兩筆訂單,並將銷售訂單 sell 從積壓訂單中刪除。否則,採購訂單 buy 將會新增到積壓訂單中。

反之亦然,如果該訂單是一筆銷售訂單 sell ,則可以檢視積壓訂單中** 最高 的採購訂單 buy 。如果該採購訂單 buy 的** 高於或等於 當前銷售訂單 sell 的**,則匹配並執行這兩筆訂單,並將採購訂單 buy 從積壓訂單中刪除。否則,銷售訂單 sell 將會新增到積壓訂單中。

輸入所有訂單後,返回積壓訂單中的 訂單總數 。由於數字可能很大,所以需要返回對 109

+710^9 + 7

109+

7 取餘的結果。

輸入:orders =

[[10,5,0],[15,2,1],[25,1,1],[30,4,0]

]輸出:6

解釋:輸入訂單後會發生下述情況:

- 提交 5 筆採購訂單,**為 10 。沒有銷售訂單,所以這 5 筆訂單新增到積壓訂單中。

- 提交 2 筆銷售訂單,**為 15 。沒有採購訂單的**大於或等於 15 ,所以這 2 筆訂單新增到積壓訂單中。

- 提交 1 筆銷售訂單,**為 25 。沒有採購訂單的**大於或等於 25 ,所以這 1 筆訂單新增到積壓訂單中。

- 提交 4 筆採購訂單,**為 30 。前 2 筆採購訂單與**最低(**為 15)的 2 筆銷售訂單匹配,從積壓訂單中刪除這 2 筆銷售訂單。第 3 筆採購訂單與**最低的 1 筆銷售訂單匹配,銷售訂單**為 25 ,從積壓訂單中刪除這 1 筆銷售訂單。積壓訂單中不存在更多銷售訂單,所以第 4 筆採購訂單需要新增到積壓訂單中。

最終,積壓訂單中有 5 筆**為 10 的採購訂單,和 1 筆**為 30 的採購訂單。所以積壓訂單中的訂單總數為 6 。

輸入:orders =

[[7,1000000000,1],[15,3,0],[5,999999995,0],[5,1,1]

]輸出:999999984

解釋:輸入訂單後會發生下述情況:

- 提交 109 筆銷售訂單,**為 7 。沒有採購訂單,所以這 109 筆訂單新增到積壓訂單中。

- 提交 3 筆採購訂單,**為 15 。這些採購訂單與**最低(**為 7 )的 3 筆銷售訂單匹配,從積壓訂單中刪除這 3 筆銷售訂單。

- 提交 999999995 筆採購訂單,**為 5 。銷售訂單的最低價為 7 ,所以這 999999995 筆訂單新增到積壓訂單中。

- 提交 1 筆銷售訂單,**為 5 。這筆銷售訂單與**最高(**為 5 )的 1 筆採購訂單匹配,從積壓訂單中刪除這 1 筆採購訂單。

最終,積壓訂單中有 (1000000000-3) 筆**為 7 的銷售訂單,和 (999999995-1) 筆**為 5 的採購訂單。所以積壓訂單中的訂單總數為 1999999991 ,等於 999999984 % (109 + 7) 。

水題,只要用兩個優先佇列分別維護 sell 訂單和 buy 訂單即可,ac **如下:

class

solution);

else

else);

i[1]

=0;}

}if(i[1

]>

0) buy.

push()

;}}else);

else

else);

i[1]

=0;}

}if(i[1

]>

0) sell.

push()

;}}}

while

(!buy.

empty()

) ans =

(ans + buy.

top(

).second)

% mod, buy.

pop();

while

(!sell.

empty()

) ans =

(ans + sell.

top(

).second)

% mod, sell.

pop();

return ans;}}

;

Magento 查詢訂單 和 該筆總的qty

select main table.increment id,main table.created at,main table.base grand total,main table.status customer table.email,sum qty ordered as total qty o...

採購訂單接收中的轉移 TRANSFER

前提 系統設定為標準三步接收 接收 檢驗 入庫 問題 何時可以進行轉移操作?程式中應該如何處理?在採購訂單的接收過程中,做完第一步接收 receive 後,進行第二步檢驗前可以進行轉移 transfer 直接選擇目的型別為接收就行了 在進行完第二步檢驗後,同樣也可以再次進行轉移 transfer 操...

採購訂單接收中的轉移 TRANSFER

前提 系統設定為標準三步接收 接收 檢驗 入庫 問題 何時可以進行轉移操作?程式中應該如何處理?在採購訂單的接收過程中,做完第一步接收 receive 後,進行第二步檢驗前可以進行轉移 transfer 直接選擇目的型別為接收就行了 在進行完第二步檢驗後,同樣也可以再次進行轉移 transfer 操...