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

Pythonで指定されたサイズ、合計、要素の上限を使用して、個別の要素配列を作成します


1つのサイズ変数Nがあり、1つの変数SUMもあります。これは、配列で使用可能なすべての要素と、配列に要素がないような別の変数Kの合計です。 Kより大きい場合、配列内のすべての要素が異なる1つの直交配列を見つける必要があります。解決策がない場合は-1を返します。

したがって、入力がN =4、SUM =16 K =9の場合、出力は[1,2,4,9]

になります。

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

  • minimum_sum:=(N *(N + 1))/ 2

  • maximum_sum:=(N * K)-(N *(N-1))/ 2

  • minimum_sum>SUMまたはmaximum_sum

    • -1を返す

  • res:=サイズN + 1の1つの配列で、0からNまで入力します

  • 合計:=minimum_sum

  • i:=N

  • i> =1の場合、実行

    • x:=合計+(K-i)

    • x

      • 合計:=合計+(K-i)

      • res [i]:=K

      • K:=K-1

    • それ以外の場合

      • res [i]:=res [i] +(SUM-合計)

      • 合計:=SUM

      • ループから出てきます

    • i:=i-1

  • 解像度を返す

理解を深めるために、次の実装を見てみましょう-

def get_arr(N, SUM, K):
   minimum_sum = (N * (N + 1)) / 2
   maximum_sum = (N * K) - (N * (N - 1)) / 2
   if (minimum_sum > SUM or maximum_sum < SUM):
      return -1
   res = [i for i in range(N + 1)]
   sum = minimum_sum
   i = N
   while(i >= 1):
      x = sum + (K - i)
      if (x < SUM):
         sum = sum + (K - i)
         res[i] = K
         K -= 1
      else:
         res[i] += (SUM - sum)
         sum = SUM
         break
         i -= 1
   return res
N = 4
SUM = 16
K = 9
print(get_arr(N, SUM, K))

入力

4, 16, 9

出力

[0, 1, 2, 4.0, 9]

  1. ペア要素がPythonの異なるBSTにあるように、指定された合計を持つペアを検索します

    2つの二分探索木が与えられ、別の合計が与えられたとします。各ペア要素が異なるBSTに存在する必要があるように、与えられた合計に関してペアを見つける必要があります。 したがって、入力がsum=12のような場合 その場合、出力は[(6、6)、(7、5)、(9、3)]になります。 これを解決するには、次の手順に従います- 関数solve()を定義します。これには、trav1、trav2、Sumが必要です。 左:=0 右:=trav2のサイズ-1 res:=新しいリスト 左=0の間、実行 trav1 [left] + trav2 [right]がSumと

  2. 与えられたサイズのグループで配列を逆にするPythonプログラム?

    =1の場合、配列内のすべての要素を逆にします。 アルゴリズム Revarray(A,n,p) /* A is an integer Array, n is the size of an array and every sub-array of size p starting from the beginning of the array and reverse it.*/ Step 1: i is the loop control variable which is initialized by 0. Step 2: using while loop check i is less than