मान लीजिए कि कोई डाइटर कैलोरी का सेवन करता है[i], यह पहले दिन की कैलोरी को दर्शाता है। यदि हमारे पास k दिनों के लगातार अनुक्रम के लिए एक पूर्णांक k है (कैलोरी[i], कैलोरी[i+1], ..., कैलोरी[i+k-1] सभी के लिए 0 <=i <=n-k ), वे टी पाते हैं। टी k दिनों के उस क्रम के दौरान खपत की गई कुल कैलोरी है (कैलोरी [i] + कैलोरी [i + 1] + ... + कैलोरी [i + k-1]):लेकिन कुछ हैं शर्तें;
- यदि टी <निचली सीमा है, तो उन्होंने अपने आहार पर खराब प्रदर्शन किया है इसलिए 1 अंक खो दें;
- यदि T> ऊपरी सीमा है, तो उन्होंने अपने आहार पर अच्छा प्रदर्शन किया इसलिए 1 अंक प्राप्त करें;
- अन्यथा, उन्होंने सामान्य रूप से प्रदर्शन किया। तो अंक समान हैं।
सबसे पहले, डाइटर के शून्य अंक होते हैं। हमें डाइटर द्वारा प्राप्त किए गए अंकों की कुल संख्या ज्ञात करनी है।
यदि सरणी [6,5,0,0] और k =2 और निचला:=1 और ऊपरी:=5 है, तो आउटपुट 0 होगा। C[0] + C[1 ]> ऊपरी, इसलिए एक बिंदु बढ़ाएँ, निचला <=C[1] + C[2] <=ऊपरी तो कोई परिवर्तन नहीं, उसके बाद C[2] + C[3] <निचला, इसलिए एक बिंदु घटाएं, इसलिए आउटपुट 0 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- अस्थायी:=0
- मैं के लिए 0 से k की सीमा में
- अस्थायी:=अस्थायी + सी[के]
- दाएं:=के-1, और बाएं:=0, और अंक:=0
- दाएं <सी की लंबाई, करते हैं
- यदि तापमान <कम है, तो अंक 1 से घटाएं, यदि अस्थायी> ऊपरी, तो अंक 1 से बढ़ाएं
- अस्थायी:=अस्थायी - सी[बाएं]
- बाएं और दाएं 1 से बढ़ाएं
- यदि दाएँ>=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