题目
樵夫阿里巴巴偶然发现了一堆带编号的箱子。每个箱子上都有一个数字标签,代表里面的金币数量。他计划挑选几种数字,然后摧毁所有带这些数字标签的箱子。他的目标是摧毁至少一半的箱子。请你帮助他找出最小的数字集合来达成这个目标。
输入
一个由逗号分隔的数字串,例如:1,1,1,1,3,3,3,6,6,8
条件
数字串中的数字数量是偶数。
1 ≤ 数字串中的数字数量 ≤ 100000。
1 ≤ 每个数字 ≤ 100000。
输出
选择的数字集合的最小大小,例如:2
示例
输入:1,1,1,1,3,3,3,6,6,8
输出:2
解释:选择数字集合 {1,8},摧毁之后的箱子只剩下 [3,3,3,6,6],数量是5,正好是原来的一半。
代码
def count_box_types(nums):
box_freq = {