Python程式:查詢合併兩個列表的方案數(保持元素順序不變)
假設我們有兩個列表nums1和nums2。現在約束條件是,當我們合併列表時,每個列表中元素的順序不能改變,例如,如果元素是[1,2,3]和[4,5,6],則一些有效的合併列表是[1,4,2,3,5,6]和[1,2,3,4,5,6],可能還有一些其他的有效合併序列。所以如果我們有大小為N和M的列表,我們必須找到可以合併它們以獲得有效列表的方案數。如果答案過大,則返回結果模10^9 + 7。
因此,如果輸入像N = 5,M = 3,則輸出將為56。
為了解決這個問題,我們將遵循以下步驟:
- ret := 1
- for i in range(N + 1, N + M + 1):
- ret := ret * i
- for i in range(1, M + 1):
- ret := floor(ret / i)
- return ret % (10^9 + 7)
示例
讓我們看看下面的實現,以便更好地理解:
def solve(N, M):
ret = 1
for i in range(N + 1, N + M + 1):
ret *= i
for i in range(1, M + 1):
ret //= i
return ret % (10**9 + 7)
N = 5
M = 3
print(solve(N, M))輸入
5, 3
輸出
56
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP