কম্পিউটার

পাইথনে তালিকাকে সুষম করতে দুই প্রান্ত থেকে ন্যূনতম সংখ্যক মুছে ফেলার প্রয়োজনীয়তা খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের 0s এবং 1s সম্বলিত একটি তালিকা আছে, আমাদেরকে তালিকার সামনে থেকে বা পিছনের দিক থেকে মানগুলি সরিয়ে ফেলতে হবে। অবশেষে, আমাদেরকে ন্যূনতম সংখ্যক মুছে ফেলার প্রয়োজনীয়তা খুঁজে বের করতে হবে যাতে বাকি তালিকায় সমান সংখ্যক 0 এবং 1 সেকেন্ড থাকে।

সুতরাং, যদি ইনপুটটি সংখ্যার মত হয় =[1, 1, 1, 0, 0, 1], তাহলে আউটপুট হবে 2, যেহেতু আমরা প্রথমটি 1 এবং শেষটি 1 মুছে ফেলতে পারি যাতে দুটি 1s এবং দুটি 0s থাকে। .

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

  • দীর্ঘতম :=0
  • d :=একটি মানচিত্র যেখানে 0 কী এর জন্য মান -1 রাখুন
  • currSum :=0
  • আমি 0 থেকে সংখ্যার আকারের মধ্যে,
      করুন
    • যদি nums[i] 0 এর মত হয়, তাহলে
      • currSum :=currSum - 1
    • অন্যথায়,
      • currSum :=currSum + 1
    • যদি currSum d হয়, তাহলে
      • দীর্ঘতম :=সর্বাধিক দীর্ঘতম এবং i - d[currSum]
    • অন্যথায়,
      • d[currSum] :=i
  • সংখ্যার রিটার্ন সাইজ - দীর্ঘতম

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

class Solution:
   def solve(self, nums):
      longest = 0
      d = {0 : -1}
      currSum = 0
      for i in range(len(nums)):
         if nums[i] == 0:
            currSum -= 1
         else:
            currSum += 1
         if currSum in d:
            longest = max(longest, i - d[currSum])
         else:
            d[currSum] = i
      return len(nums) - longest
ob = Solution()
nums = [1, 1, 1, 0, 0, 1] print(ob.solve(nums))

ইনপুট

[1, 1, 1, 0, 0, 1]

আউটপুট

2

  1. পাইথনে তালিকাকে সুষম করতে দুই প্রান্ত থেকে ন্যূনতম সংখ্যক মুছে ফেলার প্রয়োজনীয়তা খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে এক নম্বর থেকে অন্য নম্বর তৈরি করার জন্য প্রয়োজনীয় ন্যূনতম সংখ্যক অপারেশন খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে একটি স্ট্রিং সাবস্ট্রিং অন্যটির জন্য প্রয়োজনীয় ন্যূনতম সংখ্যক অপারেশন খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে দুটি স্ট্রিং সমান করতে প্রয়োজনীয় ন্যূনতম সংখ্যক প্রিপ্রসেস চালনা খুঁজুন