题解 | #两个有序数组间相加和的Topk问题#
两个有序数组间相加和的Topk问题
https://www.nowcoder.com/practice/7201cacf73e7495aa5f88b223bbbf6d1
import sys
import heapq as hq
from collections import defaultdict, Counter
dd = defaultdict(list)
cter = Counter()
q = []
n, k = [int(c) for c in input().strip().split(" ")]
arr1 = reversed([int(c) for c in input().strip().split(" ")])
arr1 = [c for c in arr1]
arr2 = reversed([int(c) for c in input().strip().split(" ")])
arr2 = [c for c in arr2]
[hq.heappush(q,(-(arr1[0]+arr2[i]),0,i)) for i in range(len(arr2)) ]
res = []
for i in range(k):
item = hq.heappop(q)
res.append(-item[0])
hq.heappush(q, (-(arr1[item[1]+1]+arr2[item[2]]),item[1]+1,item[2]))
print(" ".join([str(c) for c in res]))
#优先队列的应用#
OPPO公司福利 1045人发布
查看12道真题和解析