একটি hours লিস্ট দেওয়া আছে, যা একটি কর্মীর প্রতিদিন কাজের ঘণ্টা দেখায়। একটি দিনকে "টায়ারিং ডে" বলা হয় যদি কাজের ঘণ্টা ৮-এর চেয়ে স্ট্রিক্টলি বেশি হয়। একটি "ভল-পারফর্মিং ইন্টারভাল" হলো এমন একটি দিনের ইন্টারভাল যেখানে টায়ারিং ডের সংখ্যা নন-টায়ারিং ডের চেয়ে স্ট্রিক্টলি বেশি। সবচেয়ে লম্বা ভল-পারফর্মিং ইন্টারভালের দৈর্ঘ্য বের করতে হবে।
ইনপুট [9,9,6,0,6,6,9] হলে আউটপুট হবে 3, কারণ লংগেস্ট ভল-পারফর্মিং ইন্টারভাল হলো [9,9,6]।
সমাধানের ধাপসমূহ
- temp := 0, ans := 0, একটি ম্যাপ d, এবং corner := 0 সেট করুন
- hours অ্যারেতে লুপ চালান:
- temp := temp + 1 যদি hours[i] > 8, অন্যথায় -1
- যদি hours[i] > 8 হয়, তবে corner = 1
- যদি temp > 0 হয়, তবে ans := max(ans, i + 1)
- যদি temp ম্যাপ d-তে না থাকে, তবে d[temp] := i
- যদি temp - 1 ম্যাপ d-তে থাকে, তবে ans := max(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