Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình tìm số mặt hàng còn lại sau khi bán n món bằng Python


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] <= n thì bán hết loại đó (n -= freq[i], giảm số loại ans).
  • 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