Pythonで同じ連続した違いを持つ数字を見つけるプログラム
連続する2桁ごとの絶対差がKになるようなサイズNの配列を見つける必要があるとします。回答のすべての数値には、数値0自体を除いて先行ゼロがあってはなりません。
したがって、入力がN =4 K =7の場合、出力は[1818、2929、7070、8181、9292]になります。ここでは、0707は先行ゼロであるため無効です。
これを解決するには、次の手順に従います-
-
Nが1と同じ場合、
-
0から9の範囲の新しいリストを返します
-
-
queue:=1から9までのすべての要素でキューを作成します
-
0からN-2の範囲のnの場合、実行
-
len_queue:=キューのサイズ
-
範囲0からlen_queue-1のjの場合、実行
-
num:=キューのアイテムを残し、キューから削除します
-
lsd:=num mod 10
-
lsd --K> =0の場合、
-
キューの最後にnum*10+lsd-Kを挿入します
-
-
Kおよびlsd+K <=9の場合、
-
キューの最後にnum*10 + lsd+Kを挿入します
-
-
-
-
キューの要素を返す
例
理解を深めるために、次の実装を見てみましょう-
from collections import deque def solve(N, K): if N == 1: return list(range(10)) queue = deque(list(range(1, 10))) for n in range(N - 1): len_queue = len(queue) for j in range(len_queue): num = queue.popleft() lsd = num % 10 if lsd - K >= 0: queue.append( num * 10 + lsd - K ) if K and lsd + K <= 9: queue.append( num * 10 + lsd + K ) return list(queue) N = 4 K = 7 print(solve(N, K))
入力
4, 7
出力
[1818, 2929, 7070, 8181, 9292]
-
Pythonを使用して、同じラベルを持つサブツリー内のノードの数を見つけるプログラム
ノードに0からn-1までの番号が付けられたn個のノードを持つルート化された一般ツリーがあるとします。各ノードには、小文字の英字のラベルがあります。ラベルはlabels配列の入力として指定されます。ここで、lables[i]にはi番目のノードのラベルが含まれています。ツリーはエッジリストで表され、各エッジeには[u、v]があり、uは親、vは子を表します。サイズnの配列Aを見つける必要があります。これは、iと同じラベルを持つi番目のノードのサブツリー内のノードの数を表します したがって、入力が次のような場合 ここで、n =5およびlabel=“ ccaca” ルートには同じラベルの子
-
最大3つの数字を見つけるPythonプログラム
このチュートリアルでは、3つの数字から最大量を見つけるプログラムを作成します。 3つの数字があり、その3つの数字から最大数を見つけることが目標です。 理解を深めるために、いくつかのサンプルテストケースを見てみましょう。 Input: a, b, c = 2, 34, 4 Output: 34 Input: a, b, c = 25, 3, 12 Output: 25 Input: a, b, c = 5, 5, 5 Output: 5 以下の手順に従って、3つの数字の中から最大数を見つけてください。 アルゴリズム 1. Initialise three numbers a, b