LeetCode-Python-1176. 健身计划评估
2026/7/28 15:39:01 网站建设 项目流程

你的好友是一位健身爱好者。前段日子,他给自己制定了一份健身计划。现在想请你帮他评估一下这份计划是否合理。

他会有一份计划消耗的卡路里表,其中calories[i]给出了你的这位好友在第i天需要消耗的卡路里总量。

一份计划的周期通常是k天,你需要计算他在这k天内消耗的总卡路里T:

  • 如果T < lower,那么这份计划相对糟糕,并失去 1 分;
  • 如果T > upper,那么这份计划相对优秀,并获得 1 分;
  • 否则,这份计划普普通通,分值不做变动。

请返回统计完所有calories.length天后得到的总分作为评估结果。

注意:总分可能是负数。

示例 1:

输入:calories = [1,2,3,4,5], k = 1, lower = 3, upper = 3 输出:0 解释:calories[0], calories[1] < lower 而 calories[3], calories[4] > upper, 总分 = 0.

示例 2:

输入:calories = [3,2], k = 2, lower = 0, upper = 1 输出:1 解释:calories[0] + calories[1] > upper, 总分 = 1.

示例 3:

输入:calories = [6,5,0,0], k = 2, lower = 1, upper = 5 输出:0 解释:calories[0] + calories[1] > upper, calories[2] + calories[3] < lower, 总分 = 0.

提示:

  • 1 <= k <= calories.length <= 10^5
  • 0 <= calories[i] <= 20000
  • 0 <= lower <= upper

思路:

题目描述的不清楚,题意里的长度为k的周期,是指每一个长度为k 的周期,

比如对于示例3,所有的周期为[6, 5], [5, 0], [0, 0]。

只需要找到所有的周期和,再将周期和与lower, upper 对比即可。

class Solution(object): def dietPlanPerformance(self, calories, k, lower, upper): """ :type calories: List[int] :type k: int :type lower: int :type upper: int :rtype: int """ res = 0 s = sum(calories[: k]) for start in range(0, len(calories) - (k - 1)): if start != 0: s += calories[start + k - 1] - calories[start - 1] if s < lower: res -= 1 elif s > upper: res += 1 return res

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询