假设节食者消耗卡路里[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