题解 | 【模板】哈夫曼编码

【模板】哈夫曼编码

https://www.nowcoder.com/practice/4c0419eb07c840ca8402e4f2a52cfd49

import heapq

n = int(input())
frequencies = list(map(int, input().split()))


if n == 1:
    print(frequencies[0])
    exit()

# 使用最小堆
heap = frequencies[:]
heapq.heapify(heap)

total = 0

while len(heap) > 1:
    # 取出两个最小的频率
    first = heapq.heappop(heap)
    second = heapq.heappop(heap)
    
    # 合并这两个频率
    combined = first + second
    total += combined
    
    # 将合并后的频率放回堆中
    heapq.heappush(heap, combined)

print(total)

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-17 14:38
干个蛋,干不了一点!!!!我真服了,还没搞完,很急。 今天ddl,活没干完直接通宵,刺激。食堂很好吃,感觉离职的时候会胖10斤。mt喜欢能直接干活的,没空指导我,很难受。每个人都是笑嘻嘻的,但是从他们聊天中都能感受到各种试探,我有点慌了大家真的nb,都能准时完成工作下班,我羡慕啊!!!!!每天好累,想离职了💔
牛客26106072...:能去字节实习说明你的能力挺被认可的,实习中的这种累更有利于个人职场成长,试着当熬夜打游戏一样熬一熬,实习的意义就是看自己的差距和适应能力,总比等到工作时各种不适应辞职要好得多吧?
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务