Cho danh sách items (ID mặt hàng) và số n (số món có thể bán). Bán đi n món để số ID khác nhau còn lại là nhỏ nhất. Trả về số ID tối thiểu.
Ví dụ: items=[2,2,6,6], n=2 → 1 (bán hết 2 hoặc hết 6).
Giải thuật
- Đếm tần suất mỗi ID (
Counter). - Sắp xếp tần suất tăng dần.
- Duyệt tần suất: nếu
freq[i] <= nthì bán hết loại đó (n -= freq[i], giảm số loạians). - Ngược lại dừng và trả về
ans.
Ví dụ minh họa
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))
Đầu vào
[2, 2, 6, 6], 2
Đầu ra
1