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

更新於:2021年10月25日

132 次檢視

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.