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

পাইথনে Kটি উপাদান মুছে ফেলার পর ন্যূনতম ইউনিক সংখ্যা গণনা


একটি nums অ্যারে এবং একটি k মান দেওয়া আছে। ঠিক kটি উপাদান মুছে ফেলার পর অবশিষ্ট অ্যারেতে ন্যূনতম কতগুলো ইউনিক সংখ্যা থাকতে পারে, সেটি বের করতে হবে।

যেমন, nums = [5,4,2,2,4,4,3], k = 3 হলে আউটপুট ২। কারণ ৫ এবং ৩ মুছে ফেলে, আবার ২ বা ৪-র একটা মুছে ফেলে শুধু ২ এবং ৪ বাকি থাকে।

সমাধানের ধাপসমূহ

  • dictionary := একটি খালি ম্যাপ
  • nums-এর প্রতিটি num এর জন্য ফ্রিকোয়েন্সি গণনা করুন।
  • count := dictionary-এর আকার (ইউনিক সংখ্যা)
  • dictionary-এর ফ্রিকোয়েন্সিগুলো সর্ট করা ক্রমে লুপ:
    • k := k - frequency
    • যদি k < 0 হয়, তবে count ফেরত দিন।
    • অন্যথায় count := count - 1
  • count ফেরত দিন।

উদাহরণ

def solve(nums, k):
    dictionary = {}
    for num in nums:
        if num not in dictionary:
            dictionary[num] = 1
        else:
            dictionary[num] += 1
    count = len(dictionary)
    for frequency in sorted(dictionary.values()):
        k -= frequency
        if k < 0:
            return count
        else:
            count -= 1
    return count

nums = [5,4,2,2,4,4,3]
k = 3
print(solve(nums, k))

ইনপুট

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

আউটপুট

2

  1. পাইথনে রঙ মার্জ করলে অবশিষ্ট ন্যূনতম রঙের সংখ্যা বের করার প্রোগ্রাম

  2. পাইথনে n আইটেম বিক্রয়ের পর অবশিষ্ট আইডি সংখ্যা

  3. পাইথনে k বার ইনক্রিমেন্ট করার পর সবচেয়ে বেশি ফ্রিকোয়েন্সি পাওয়া সংখ্যা বের করার প্রোগ্রাম

  4. পাইথনে সর্টেড লিস্টে ইউনিক ইন্টিজার সংখ্যা বের করার প্রোগ্রাম