ধরুন আমাদের nums নামক একটি অ্যারে আছে যেখানে শুধুমাত্র পূর্ণসংখ্যা সংরক্ষণ করা হয়। যদি আমাদের একটি সংখ্যা থাকে k. ঠিক k উপাদানগুলি সরানোর পরে আমাদের কমপক্ষে সংখ্যক অনন্য উপাদান খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুটটি nums =[5,4,2,2,4,4,3], k =3 এর মত হয়, তাহলে আউটপুট হবে 2, কারণ যদি আমরা 5 এবং 3 এবং 2s-এর যে কোনো একটিকে সরিয়ে ফেলি। অথবা 4s-এর যেকোন একটি, তারপর শুধুমাত্র 2 এবং 4 বাকি থাকবে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
অভিধান:=একটি নতুন মানচিত্র
-
প্রতিটি সংখ্যার জন্য, করুন
-
যদি num অভিধানে না থাকে, তাহলে
-
অভিধান [সংখ্যা]:=1
-
-
অন্যথায়,
-
অভিধান[সংখ্যা] :=অভিধান[সংখ্যা] + 1
-
-
-
গণনা:=অভিধানের আকার
-
অভিধানের সমস্ত মানের সাজানো ক্রম অনুসারে প্রতিটি ফ্রিকোয়েন্সির জন্য, করুন
-
k :=k - ফ্রিকোয়েন্সি
-
যদি k <0, তাহলে
-
ফেরত গণনা
-
-
অন্যথায়,
-
গণনা :=গণনা - 1
-
-
-
ফেরত গণনা
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
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