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

与えられた値より大きいセットの数を見つけるためのPythonプログラム


いくつかの整数を含む配列があるとします。与えられた数の配列からすべての隣接するサブ配列を見つけて、それを別のリストに入れます。ここで、各サブアレイをそのサブアレイ内の最大要素に置き換えます。与えられた数kもあり、与えられた数よりも多くなっているサブアレイの数を調べる必要があります。

したがって、入力がinput_array =[5、6、7、8]、k =7の場合、出力は4

になります。

指定された入力配列の連続するサブ配列は、{5}、{6}、{7}、{8}、{5、6}、{6、7}、{7、8}、{5、6、7 }、{6、7、8}、{5、6、7、8}

最大要素を含むサブアレイを更新すると、サブアレイは-

になります。

{5}、{6}、{7}、{8}、{6}、{7}、{8}、{7}、{8}、{8}。

要素が7より大きい4つのセットがあります。

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

  • count:=0
  • 連続:=0
  • input_arrayのxごとに、
      を実行します。
    • x> kの場合、
      • 連続:=0
    • それ以外の場合、
      • 連続:=連続+1
      • カウント:=カウント+連続

input_arrayの戻り値*((input_arrayのサイズ+ 1)/ 2)のフロア値-カウント

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

def solve(input_array, k):
   count = 0
   consecutive = 0
   for x in input_array:
      if x > k:
         consecutive = 0
      else:
         consecutive += 1
         count += consecutive
   return len(input_array) * (len(input_array) + 1) // 2 - count
print(solve([5, 6, 7, 8], 7))

入力

[5, 6, 7, 8], 7

出力

4

  1. Pythonの特定の二分木でBSTの最大合計値を見つけるプログラム

    二分木が提供されていると仮定します。そのサブツリーに二分探索木(BST)が存在するかどうかを調べ、最大のBSTの合計を見つける必要があります。合計を求めるために、そのBSTの各ノードの値を加算します。合計値を出力として返します。 したがって、入力が次のような場合 その場合、出力は12になります。 与えられた二分木のBSTは-です ノードの合計=12。 これを解決するには、次の手順に従います- c:=0 m:=null 値:=0 関数recurse()を定義します。これはノードを取ります ノードがnullでない場合、 left_val:=recurse(ノード

  2. Pythonでgodownに入れるボックスの数を見つけるためのプログラム

    整数を含む2つの配列があるとします。 1つのリストには、いくつかのユニット幅ボックスの高さが含まれ、別の配列には、godownの部屋の高さが含まれます。部屋には0...nの番号が付けられ、部屋の高さは配列godownのそれぞれのインデックスに示されます。ゴダウンに押し込める箱の数を調べなければなりません。いくつかの点に注意する必要があります ボックスを重ねることはできません。 ボックスの順序は変更できます。 ボックスは左から右にのみゴダウンに入れられます。 ボックスが部屋の高さよりも高い場合、そのボックスとその右側のすべてのボックスをゴダウンに押し込むことはできません。