मान लीजिए हमारे पास घंटों की सूची है, यह किसी दिए गए कर्मचारी के लिए प्रति दिन काम किए गए घंटों की संख्या की सूची है। यहां एक दिन को थकाऊ दिन माना जाता है यदि और केवल यदि काम किए गए घंटों की संख्या (सख्ती से) 8 से अधिक है। एक अच्छा प्रदर्शन अंतराल दिनों का एक अंतराल है जिसके लिए थकाऊ दिनों की संख्या गैर-थकाऊ दिनों की संख्या से सख्ती से अधिक है। हमें सबसे लंबे अच्छे प्रदर्शन अंतराल की लंबाई ढूंढनी है। इसलिए यदि इनपुट [9,9,6,0,6,6,9] जैसा है, तो आउटपुट 3 होगा। ऐसा इसलिए है क्योंकि सबसे लंबा अच्छा प्रदर्शन अंतराल [9,9,6] है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- temp := 0 और ans := 0 सेट करें, एक मैप d बनाएं, और corner := 0
- i के लिए 0 से घंटे सरणी के आकार - 1 तक की रेंज में
- temp := temp + 1 यदि hours[i] > 8, अन्यथा -1
- यदि hours[i] > 8, तो corner = 1
- यदि temp > 0, तो ans := ans और i + 1 का अधिकतम
- यदि temp मैप d में नहीं है, तो d[temp] := i
- यदि temp - 1 मैप d में है, तो ans := ans और 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