百度第二题 礼物最大值

百度第二题:礼物最大值,为啥用最小堆做说是超内存呢?求大佬们指点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  

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

相关推荐

05-09 13:22
门头沟学院 Java
点赞 评论 收藏
分享
03-25 19:00
东北大学 Java
程序员牛肉:太好了,是聊天记录。不得不信了。 当个乐子看就好,不要散播焦虑
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务