Python中的饮食计划性能

假设节食者消耗卡路里[i],则表示第i天的卡路里。如果我们有一个整数k,则对于k天的每个连续序列,即(对于所有0 <= i <= nk,卡路里[i],卡路里[i + 1],...,卡路里[i + k-1] ),他们找到了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] <下限,因此减少了一个点,所以输出将为0。

为了解决这个问题,我们将遵循以下步骤-

  • 温度:= 0

  • 当我在0到k的范围内

    • 温度:=温度+ C [k]

  • 右:= k – 1,左:= 0,点:= 0

  • 而正确<C的长度,做

    • 如果temp <较低,则将点减少1,如果temp>较高,则将点增加1

    • temp:= temp – C [left]

    • 左右增加1

    • 如果正确> = C的长度,则从循环中出来

    • temp:= temp + C [右]

  • 返回点

示例

让我们看下面的实现以更好地理解-

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