数据结构 7-1 抢红包 pta
时间: 2025-02-04 09:25:51 浏览: 38
抢红包是一个常见的编程练习题目,通常涉及到数据结构中的队列(Queue)或堆(Heap)。在7-1版本的"抢红包"问题中,你可以想象成一个场景,有多个红包按金额大小随机分配,参与者需要尽快领取。
一种常见的解决方案是使用优先级队列(例如Python的`heapq`模块),因为我们需要快速找到最大的红包。首先,将红包按照金额从大到小插入队列;然后,每次参与者请求领取红包时,从队列顶部取出金额最大的那个给当前参与者,同时更新剩余红包的队列。这个过程保证了总是能第一时间发放最大的红包。
Python示例代码可能如下:
```python
import heapq
class Solution:
def takeRedPacket(self, red_packets):
if not red_packets:
return []
# 使用最小堆存储红包
heap = [-p for p in red_packets]
heapq.heapify(heap)
res = []
while heap:
# 取出最大值的红包并减少剩余红包数量
max_red_packet = -heapq.heappop(heap)
res.append(max_red_packet)
# 如果剩余红包数量大于0,则更新剩余红包的最大值回堆
if heap:
heapq.heappush(heap, -heapq.heappop(heap) - 1)
return res
```
阅读全文
相关推荐


















