思路1 贪心法+最大堆

首先确定一个边界条件。如果一个字母的出现频率大于1/2,则必然是不能重构的。

我们构建一个最大堆,堆的元素是(times,ch),即字符出现的次数和字符。

然后按照出现次数从大到小把字符一次加到res里。times-1后再把ch放到堆里。

用prev记录上次pop出的字母和其个数

python的堆默认是最小堆,把key加个符号,就可以当最大堆用。同时heap的元素可以是tuple,会优先以tuple最前面的元素作为比较的key。

Last updated