ধরুন আমাদের 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