একটি 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