কম্পিউটার টিউটোরিয়াল

পাইথনে লংগেস্ট ভল-পারফর্মিং ইন্টারভাল বের করুন

একটি 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
  1. পাইথনে সিঙ্গেল-রো কিবোর্ড টাইমিং ক্যালকুলেশন

  2. পাইথনে Longest Increasing Subsequence (সর্বাধিক দীর্ঘ বর্ধমান সাবসিকোয়েন্স)

  3. পাইথনে লองেস্ট প্যালিনড্রোমিক সাবস্ট্রিং (Longest Palindromic Substring)

  4. পাইথনে লองেস্ট সাবস্ট্রিং উইথআউট রিপিটিং ক্যারেক্টারস