কম্পিউটার

পাইথনে দীর্ঘতম ভাল-পারফর্মিং ব্যবধান


ধরুন আমাদের ঘন্টার তালিকা আছে, এটি একটি প্রদত্ত কর্মচারীর জন্য প্রতিদিন কত ঘন্টা কাজ করেছে তার একটি তালিকা। এখানে একটি দিনকে ক্লান্তিকর দিন হিসাবে বিবেচনা করা হয় যদি এবং শুধুমাত্র যদি কাজ করা ঘন্টার সংখ্যা (কঠোরভাবে) 8-এর বেশি হয়। একটি ভাল-সঞ্চালনকারী ব্যবধান হল একটি দিনের ব্যবধান যার জন্য ক্লান্তিকর দিনের সংখ্যা সংখ্যার চেয়ে কঠোরভাবে বড়। ক্লান্তিকর দিনগুলির আমাদের দীর্ঘতম ভাল-পারফর্মিং ব্যবধানের দৈর্ঘ্য খুঁজে বের করতে হবে। সুতরাং যদি ইনপুটটি [9,9,6,0,6,6,9] এর মত হয়, তাহলে আউটপুট হবে 3। এর কারণ হল দীর্ঘতম ভাল পারফর্মিং ব্যবধান হল [9,9,6]

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • টেম্প সেট করুন :=0 এবং উত্তর :=0, একটি মানচিত্র তৈরি করুন d, এবং কোণ :=0
  • আমি পরিসীমা 0 থেকে ঘন্টা অ্যারের আকার - 1
    • temp :=temp + 1 যদি ঘন্টা[i]> 8, অন্যথায় -1
    • যদি ঘন্টা[i]> 8, তারপর কর্নার =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

  1. পাইথনে একক-সারি কীবোর্ড

  2. পাইথনে দীর্ঘতম ক্রমবর্ধমান অনুক্রম

  3. পাইথনে দীর্ঘতম প্যালিনড্রোমিক সাবস্ট্রিং

  4. পাইথনে অক্ষর পুনরাবৃত্তি ছাড়াই দীর্ঘতম সাবস্ট্রিং