思路1 贪心法+最大堆
首先确定一个边界条件。如果一个字母的出现频率大于1/2,则必然是不能重构的。
我们构建一个最大堆,堆的元素是(times,ch),即字符出现的次数和字符。
然后按照出现次数从大到小把字符一次加到res里。times-1后再把ch放到堆里。
用prev记录上次pop出的字母和其个数
python的堆默认是最小堆,把key加个符号,就可以当最大堆用。同时heap的元素可以是tuple,会优先以tuple最前面的元素作为比较的key。
Last updated
首先确定一个边界条件。如果一个字母的出现频率大于1/2,则必然是不能重构的。
我们构建一个最大堆,堆的元素是(times,ch),即字符出现的次数和字符。
然后按照出现次数从大到小把字符一次加到res里。times-1后再把ch放到堆里。
用prev记录上次pop出的字母和其个数
python的堆默认是最小堆,把key加个符号,就可以当最大堆用。同时heap的元素可以是tuple,会优先以tuple最前面的元素作为比较的key。
Last updated