百度第二题 礼物最大值

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

相关推荐

点赞 评论 收藏
分享
三年之期已到我的offer快到碗里来:9硕都比不上9本
点赞 评论 收藏
分享
11-27 12:43
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务