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
-
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つのリストの共通部分を見つける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