Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで順序が変わらないように2つのリストをマージできる方法の数を見つけるためのプログラム


nums1とnums2の2つのリストがあるとします。ここでの制約は、各リストの要素の順序が変更されない場合です。たとえば、要素が[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
  • N+1からN+Mの範囲のiについては、
    • ret:=ret * i
  • 1からMの範囲のiについては、
    • ret:=r/iのフロア
  • return ret mod(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

  1. Pythonでメッセージをデコードできるいくつかの方法を見つけるためのプログラム

    a =1、b =2、...z =26のようなマッピングがあり、エンコードされたメッセージメッセージ文字列があるとすると、デコードできる方法の数を数える必要があります。 したがって、入力がmessage =222の場合、出力は3になります。これは、bbb、bv、vbの3つの方法でデコードできるためです。 これを解決するには、次の手順に従います- memo:=メッセージサイズ+1と同じサイズの0のリスト memo [0]:=1 memo [1]:=1(message [0]が「0」と同じでない場合)それ以外の場合は0 2からメッセージのサイズまでの範囲のiの場合、実

  2. 2つのリストの共通部分を見つけるPythonプログラム?

    交差演算とは、リスト1とリスト2からすべての共通要素を取得する必要があり、すべての要素が別の3番目のリストに格納されることを意味します。 List1::[1,2,3] List2::[2,3,6] List3::[2,3] アルゴリズム Step 1: input lists. Step 2: first traverse all the elements in the first list and check with the elements in the second list. Step 3: if the elements are matched then store in t