ধরুন আমাদের কাছে আইটেম নামক সংখ্যার একটি তালিকা এবং আরেকটি মান n আছে। একজন বিক্রয়কর্মীর একটি ব্যাগে র্যান্ডম আইডি সহ আইটেম রয়েছে। সেলসম্যান ব্যাগ থেকে যত বেশি এন আইটেম মুছে ফেলতে পারে। n অপসারণের পরে আমাদের ব্যাগে ন্যূনতম সংখ্যক বিভিন্ন আইডি খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুটটি আইটেম =[2, 2, 6, 6] n =2 এর মতো হয়, তবে আউটপুটটি 1 হবে কারণ আমরা আইডি 2 বা আইডি 6 সহ দুটি আইটেম বিক্রি করতে পারি, তবে কেবলমাত্র একক লক্ষ্যযুক্ত আইটেম হবে। সেখানে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
- c :=আইটেমগুলিতে উপস্থিত প্রতিটি উপাদানের ফ্রিকোয়েন্সি
- উত্তর :=c এর আকার
- freq :=c-এ সমস্ত ফ্রিকোয়েন্সির তালিকা সাজান
- i :=0
- যখন i
- যদি freq[i] <=n, তারপর
- n :=n - freq[i]
- উত্তর :=উত্তর - ১
- অন্যথায়,
- উত্তর ফেরত দিন
- i :=i + 1
- যদি freq[i] <=n, তারপর
আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:
উদাহরণ
from collections import Counter class Solution: def solve(self, items, n): c = Counter(items) ans = len(c) freq = sorted(c.values()) i = 0 while i < len(freq): if freq[i] <= n: n -= freq[i] ans -= 1 else: return ans i += 1 return 0 ob = Solution() items = [2, 2, 6, 6] n = 2 print(ob.solve(items, n))
ইনপুট
[2, 2, 6, 6], 2
আউটপুট
1