Python中的饮食计划性能
假设一个节食者消耗卡路里[i],这表示第 i 天的卡路里。如果我们有一个整数 k,对于每一段连续的 k 天(对于所有 0 <= i <= n-k 的 calories[i],calories[i+1],...,calories[i+k-1]),他们找到 T。T 是这段连续 k 天内消耗的总卡路里(calories[i] + calories[i+1] + ... + calories[i+k-1]):但有一些条件;
- 如果 T < 下限,则他们在节食方面表现不佳,因此扣 1 分;
- 如果 T > 上限,则他们在节食方面表现良好,因此加 1 分;
- 否则,他们的表现正常。所以分数保持不变。
最初,节食者有零分。我们必须找到节食者获得的总分。
如果数组为 [6,5,0,0],k = 2,lower := 1 且 upper := 5,则输出将为 0。C[0] + C[1] > upper,所以增加一分,lower <= C[1] + C[2] <= upper 所以没有变化,之后 C[2] + C[3] < lower,所以减少一分,所以输出将为 0。
为了解决这个问题,我们将遵循以下步骤 -
- temp := 0
- 对于 i 从 0 到 k 的范围
- temp := temp + C[k]
- right := k – 1,left := 0,points := 0
- 当 right < C 的长度时,执行
- 如果 temp < lower,则 points 减 1,如果 temp > upper,则 points 加 1
- temp := temp – C[left]
- left 和 right 各增加 1
- 如果 right >= C 的长度,则退出循环
- temp := temp + C[right]
- 返回 points
示例
让我们看看以下实现以获得更好的理解 -
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
广告