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

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]

  1. Pythonを使用して、同じラベルを持つサブツリー内のノードの数を見つけるプログラム

    ノードに0からn-1までの番号が付けられたn個のノードを持つルート化された一般ツリーがあるとします。各ノードには、小文字の英字のラベルがあります。ラベルはlabels配列の入力として指定されます。ここで、lables[i]にはi番目のノードのラベルが含まれています。ツリーはエッジリストで表され、各エッジeには[u、v]があり、uは親、vは子を表します。サイズnの配列Aを見つける必要があります。これは、iと同じラベルを持つi番目のノードのサブツリー内のノードの数を表します したがって、入力が次のような場合 ここで、n =5およびlabel=“ ccaca” ルートには同じラベルの子

  2. 最大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