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

Pythonの再帰的インデックス付けを使用して要素のセットに存在する要素の数をカウントするプログラム


Aと呼ばれる数のリストと別の数kがあるとすると、可能な要素の新しいセット{A [k]、A [A [k]]、A [A [A [k]]]、.を作成する必要があります。 。}インデックスから外れる前に停止します。このセットのサイズを見つける必要があります。そうでない場合は、サイクルがある場合は-1です。

したがって、入力がA =[1,2,3,4,5,6,7]、k =1の場合、出力はA [1] =2、A [2] =3として6になります。 A [3] =4、A [4] =5、A [5] =6、A [6] =7、つまりセットは{2,3,4,5,6,7}、セットのサイズは6.

これを解決するには、次の手順に従います-

  • 見た:=新しいセット
  • k
  • A [k]が表示されている場合、
    • 戻り値-1
  • A[k]をseenに挿入
  • k:=A [k]
  • 見たサイズを返す
  • 理解を深めるために、次の実装を見てみましょう-

    class Solution:
       def solve(self, A, k):
          seen = set()
          while k < len(A):
             if A[k] in seen:
                return -1
             seen.add(A[k])
             k = A[k]
          return len(seen)
    ob = Solution()
    print(ob.solve([1,2,3,4,5,6,7], 1))

    入力

    [1,2,3,4,5,6,7], 1

    出力

    6

    1. PythonでnノードのBSTの数をカウントするプログラム

      n個の異なるノードがあるとします。すべてが異なります。二分探索木を形成するためにそれらを配置できる方法の数を見つける必要があります。二分探索木で知っているように、左側のサブツリーは常に小さい値を保持し、右側のサブツリーは大きい値を保持します。 これを解決するために、カタラン数を見つけます。カタラン数C(n)は、n個の異なるキーを持つ二分探索木を表します。式は次のようになります $$ C(n)=\ frac {(2n)!} {(n + 1)!\ times n!} $$ したがって、入力がn =3の場合、出力は5になります。 これを解決するには、次の手順に従います- 関数ncr

    2. 与えられた範囲内の奇数因子を持つ要素の数のためのPythonプログラム

      この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −範囲が与えられているので、範囲内の奇数因子の数を見つける必要があります。 アプローチ 私たち全員が知っているように、すべての完全な正方形には、範囲内に奇数の因子があります。そこで、ここでは完全な平方の数を計算します。 mとnは両方とも包括的であるため、nが完全な正方形である場合のエラーを回避するために、式でn-1を使用します。 次に、以下の実装を見てみましょう- 例 # count function def count(n, m):    return int(m**0.5) -