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
廣告