题解 | #牛群的第 m大的和#

牛群的第 m大的和

https://www.nowcoder.com/practice/04257790a4314942b26df19df9f68581

题目描述有bug,这里求得是第m大,而题中一直说的是第m小

key:

  • 将堆中的每个数都拿出来与新的num相加最后放入新的堆中,实现大小比较
  • 题目只需要求最后往前数第m个数就行,所以前面的结果都可以舍弃
class Solution:
    def mthSmallestSum(self , nums: List[int], m: int) -> int:
        heap1 = [0]
        
        for i in range(len(nums)):
            heap2 = []
            
            # 将堆中的每个数都拿出来与新的num相加最后放入新的堆中,实现大小比较
            while heap1:
                top_num = heapq.heappop(heap1)
                heapq.heappush(heap2, top_num)
                heapq.heappush(heap2, top_num + nums[i])

            # 题目只需要求最后往前数第m个数就行,所以前面的结果都可以舍弃
            while len(heap2) > m:
                heapq.heappop(heap2)

            heap1 = heap2

        return heap1[0]

全部评论

相关推荐

高斯林的信徒:问你有没有保底,好人啊,就差把这是kpi面告诉你了
点赞 评论 收藏
分享
04-15 23:42
中山大学 Java
ResourceUtilization:过几天楼主就会捧着一堆offer来问牛友们该怎么选辣
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务