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