मान लीजिए कि हमारे पास घंटों की सूची है, यह किसी दिए गए कर्मचारी के लिए प्रति दिन काम किए गए घंटों की एक सूची है। यहां एक दिन को एक थका देने वाला दिन माना जाता है यदि और केवल तभी जब काम किए गए घंटों की संख्या (कड़ाई से) 8 से अधिक हो। एक अच्छा प्रदर्शन करने वाला अंतराल दिनों का अंतराल होता है जिसके लिए थका देने वाले दिनों की संख्या संख्या से काफी अधिक होती है। गैर-थकाऊ दिनों के। हमें सबसे लंबे समय तक अच्छा प्रदर्शन करने वाले अंतराल की लंबाई का पता लगाना है। तो अगर इनपुट [9,9,6,0,6,6,9] जैसा है, तो फिर आउटपुट 3 होगा। ऐसा इसलिए है क्योंकि सबसे लंबा अच्छा प्रदर्शन करने वाला अंतराल [9,9,6]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- अस्थायी सेट करें:=0 और उत्तर:=0, एक नक्शा d बनाएं, और कोने:=0
- मैं के लिए 0 से घंटे की सरणी के आकार के लिए - 1
- अस्थायी:=अस्थायी + 1 अगर घंटे[i]> 8, अन्यथा -1
- अगर घंटे[i]> 8, तो कोना =1
- अगर अस्थायी> 0, तो उत्तर :=अधिकतम उत्तर और i + 1
- यदि अस्थायी मानचित्र d में नहीं है, तो d[temp] :=i
- यदि मानचित्र d में अस्थायी -1 है, तो, उत्तर:=अधिकतम उत्तर और i – d [temp – 1]
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution(object): def longestWPI(self, hours): temp = 0 ans = 0 d = {} corner = 0 for i in range(len(hours)): temp += 1 if hours[i]>8 else -1 if hours[i]>8: corner = 1 if temp>0: ans = max(ans,i+1) if temp not in d: d[temp]=i if temp-1 in d: ans = max(ans,i-d[temp-1]) return max(ans,0) ob = Solution() print(ob.longestWPI([9,9,6,0,6,6,9]))
इनपुट
[9,9,6,0,6,6,9]
आउटपुट
3