কম্পিউটার

প্রতিটি কে-আকারের উইন্ডোতে পাইথনে অনন্য উপাদান রয়েছে এমন সংখ্যার একটি তালিকা খুঁজে বের করার জন্য প্রোগ্রাম


ধরুন আমাদের কাছে nums নামে একটি সংখ্যার তালিকা আছে এবং আরেকটি সংখ্যা k, আমাদের k আকারের প্রতিটি উইন্ডোতে স্বতন্ত্র সংখ্যার গণনার একটি তালিকা খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি nums =[2, 2, 3, 3, 4], k =2 এর মত হয়, তাহলে আউটপুট হবে [1, 2, 1, 2], যেমন উইন্ডোগুলি [2, 2], [২, ৩], [৩, ৩], এবং [৩, ৪]।

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

  • c :=সংখ্যা এবং তাদের ফ্রিকোয়েন্সিগুলিতে উপাদানগুলির একটি অভিধান তৈরি করুন

  • উত্তর :=একটি নতুন তালিকা

  • i রেঞ্জ k থেকে সংখ্যার আকারের জন্য, করুন

    • উত্তরের শেষে c-এর আকার সন্নিবেশ করুন

    • c[সংখ্যা[i]] :=c[সংখ্যা[i]] + 1

    • c[সংখ্যা[i - k]] :=c[সংখ্যা[i - k]] - 1

    • যদি c[সংখ্যা[i - k]] 0 এর সমান হয়, তাহলে

      • সরান c[সংখ্যা[i - k]]

  • উত্তরের শেষে c-এর আকার সন্নিবেশ করুন

  • উত্তর ফেরত দিন

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

উদাহরণ

from collections import Counter

class Solution:
   def solve(self, nums, k):
      c = Counter()
      for i in range(k):
         c[nums[i]] += 1
      ans = []
      for i in range(k, len(nums)):
         ans.append(len(c))
         c[nums[i]] += 1
         c[nums[i - k]] -= 1
         if c[nums[i - k]] == 0:
            del c[nums[i - k]]
      ans.append(len(c))
      return ans

ob = Solution()
nums = [2, 2, 3, 3, 4]
print(ob.solve(nums, 2))

ইনপুট

[2, 2, 3, 3, 4], 2

আউটপুট

[1, 2, 1, 2]

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

  2. পাইথন প্রোগ্রামে তালিকায় উপাদানের যোগফল খুঁজুন

  3. পাইথন প্রোগ্রাম তালিকায় উপাদানের যোগফল খুঁজে বের করতে

  4. একটি তালিকা থেকে N বৃহত্তম উপাদান খুঁজে পেতে পাইথন প্রোগ্রাম