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

Pythonでのダイエットプランのパフォーマンス


ダイエットをする人がカロリーを消費するとします[i]。これはi日目のカロリーを示します。整数kがある場合、k日間の連続するシーケンスごとに、つまり(calories [i]、calories [i + 1]、...、calories [i + k-1] for all 0 <=i <=n-k )、彼らはTを見つけます。Tはそのk日間のシーケンス中に消費された総カロリーです(カロリー[i]+カロリー[i+ 1] +...+カロリー[i+k-1]):しかし、いくつかあります条件;

  • T <下限の場合、食事療法のパフォーマンスが低いため、1ポイントを失います。
  • T>上限の場合、彼らは食事療法でうまく機能したので、1ポイントを獲得します;
  • それ以外の場合は、正常に機能しました。つまり、ポイントは同じです。

最初、ダイエット者はゼロポイントを持っています。ダイエットをしている人が獲得したポイントの総数を見つける必要があります。

配列が[6,5,0,0]で、k =2以下:=1かつ上位:=5の場合、出力は0になります。C[0] + C [1 ]>上限なので、1ポイント増やし、下限<=C [1] + C [2] <=上限なので変更なし、その後C [2] + C [3] <下限なので、1ポイント減らして、出力0になります。

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

  • temp:=0
  • 0からkの範囲のiの場合
    • temp:=temp + C [k]
  • 右:=k – 1、左:=0、ポイント:=0
  • 正しい
  • temp <が低い場合は、ポイントを1減らし、temp> が高い場合は、ポイントを1増やします
  • temp:=temp –C[左]
  • 左右を1つ増やします
  • 正しい場合>=Cの長さの場合、ループから出てきます
  • temp:=temp + C [right]
  • リターンポイント
  • 理解を深めるために、次の実装を見てみましょう-

    class Solution(object):
       def dietPlanPerformance(self, c, k, l, u):
          temp = 0
          for i in range(k):
             temp += c[i]
          right = k-1
          left = 0
          points = 0
          while right < len(c):
             if temp<l:
                points-=1
             elif temp>u:
                points+=1
             temp -=c[left]
             left+=1
             right+=1
             if(right >= len(c)):
                break
             temp+=c[right]
          return points
    ob1 = Solution()
    print(ob1.dietPlanPerformance([6,5,0,0],2,1,5))

    入力

    [6,5,0,0]
    2
    1
    5

    出力

    0

    1. Pythonでパスカルの三角形のn番目の行を見つけるプログラム

      数値がnであるとすると、パスカルの三角形のn番目(0インデックス)の行を見つける必要があります。パスカルの三角形は次のように作成できることを知っています- 一番上の行には、1の配列があります。 次の行は、上と左に番号を追加し、上と右に番号を追加することによって作成されます。 いくつかの行は次のとおりです- したがって、入力が4のような場合、出力は[1、4、6、4、1]になります。 これを解決するには、次の手順に従います- nが0と同じ場合、 リターン[1] nが1と同じ場合、 return [1,1] ls:=[1,1]のリスト、temp:=[1,1]のリス

    2. Pythonでの二分木の最大深度

      二分木が1つあるとします。その木の最大の深さを見つけなければなりません。ツリーの最大深度は、最長のパスを使用してルートからリーフに到達するためにトラバースされるノードの最大数です。ツリーが次のようになっているとします。ここでは深さが3になります。 これを解決するために、次の手順に従います。 ここでは、再帰的アプローチを使用します。メソッドはsolve(root、depth =0)です。 ルートが空の場合は、深さを返します それ以外の場合は、solve(left、depth + 1)とsolve(left、depth + 1)の最大値を返します 理解を深めるために、次の実装を見てみ