Python中找出两个数组元素的第k大乘积的程序
假设我们有两个包含一些整数的列表p和q。我们必须将这些列表的所有值相乘,并且必须从乘法结果中找出第k个最大值。
所以,如果输入像p=[2,5],q=[6,8],k=2,那么输出将是16。
乘法结果为:2*6=12,2*8=16,5*6=30,5*8=40。is(索引从0开始)的第二大元素是16。
示例
让我们看看以下实现以获得更好的理解-
from heapq import heappush, heappop def solve(p, q, k): p = sorted(p) q = sorted(q) k += 1 heap = [] for elem in q: if elem >= 0: for i in range((len(p) - 1), -1, -1): cd = elem * p[i] if heap and len(heap) == k and cd <= heap[0]: break heappush(heap, cd) if len(heap) > k: heappop(heap) else: for i in range(len(p)): cd = elem * p[i] if heap and len(heap) == k and cd <= heap[0]: break heappush(heap, cd) if len(heap) > k: heappop(heap) return heap[0] print(solve([2, 5], [6, 8], 2))
输入
[2, 5], [6, 8], 2输出结果
16
热门推荐
10 小红书平安祝福语简短
11 生日祝福语大全女孩简短
12 收生日红包祝福语 简短
13 领证幽默祝福语简短
14 法考面试祝福语简短
15 老哥出门祝福语简短语
16 送灯祝福语简短独特
17 幼儿狗年祝福语大全简短
18 好听的元旦简短祝福语