Python 中的饮食计划效果
pythonserver side programmingprogramming更新于 2025/10/26 21:00:17
假设节食者消耗了卡路里[i],这表示第 i 天的卡路里。如果我们有一个整数 k,对于每个连续的 k 天序列(卡路里[i]、卡路里[i+1]、...、卡路里[i+k-1],对于所有 0 <= i <= n-k),他们会找到 T。T 是该 k 天序列中消耗的总卡路里(卡路里[i] + 卡路里[i+1] + ... + 卡路里[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] <较低,所以减少一个点,所以输出将为 0。
为了解决这个问题,我们将遵循以下步骤 −
- temp := 0
- 对于 i 在 0 到 k 范围内
- temp := temp + C[k]
- right := k – 1,并且 left := 0,并且 points := 0
- 当 right < C 的长度时,执行
- 如果 temp < lower,则将点数减少 1,如果 temp > upper,则将点数增加 1
- temp := temp – C[left]
- 将左边和右边各增加 1
- 如果右边 >= 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
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

