百度第二题 礼物最大值

百度第二题:礼物最大值,为啥用最小堆做说是超内存呢?求大佬们指点T_T,本地可以跑例子,粘到答题框里就不行了
import heapq
n,k=map(int,raw_input().split())
arr=map(int,raw_input().split())
if k>=n:
    print sum(arr)
else:
    l=arr[:k]
    heapq.heapify(l)
    i=k
    res=[sum(l)]
    for i in range(k,n):
        if arr[i]>l[0]:
            item=arr[i]
            item=heapq.heapreplace(l,item)
            res.append(sum(l))
    m=len(res)
    res=res+[res[-1]]*(n-k+1-m)
    print res  

#百度#
全部评论
这个我正常做60  用了最小堆不知道为啥只能10
点赞 回复 分享
发布于 2017-09-11 21:06
最小堆过了80%....
点赞 回复 分享
发布于 2017-09-11 21:06
10%,搞不懂了
点赞 回复 分享
发布于 2017-09-11 21:08
10%,也搞不懂
点赞 回复 分享
发布于 2017-09-11 21:10
 赛马不是有提示吗?申请数组的空间太大了。只用申请k大小的数组就行了。对k+1到n,每个数替换数组中的最小值(用的O(n)遍历),也没有用堆,就AC了。
点赞 回复 分享
发布于 2017-09-11 21:12
最小堆80%,结果是WA
点赞 回复 分享
发布于 2017-09-11 22:06

相关推荐

ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务