程序在Python中查找具有最大和的k个子列表并按升序返回和
假设我们有一个称为nums的数字列表,另一个值为k,我们必须找到总数最大的k个子列表,并以非降序返回和。
因此,如果输入类似于nums=[2,4,5,-100,12,-30,6,-2,6]k=3,则输出将为[10,11,12]具有这三个子列表的总和最大-[6,-2、6],[2、4、5],[12]。
为了解决这个问题,我们将遵循以下步骤-
ps:=1的列表+num的大小并用0填充
对于每个索引i和值vnums,执行
ps[i+1]:=v+ps[i]
hp:=一个新列表
对于0到ps大小的范围内的i
将-(ps[j]-ps[i])插入ps堆
对于范围i+1到ps大小的j
res:=弹出ps堆中的所有元素并反转它们
返回资源
让我们看下面的实现以更好地理解-
示例
from heapq import heappop, heappush
class Solution:
def solve(self, nums, k):
ps = [0 for _ in range(len(nums) + 1)]
for i, v in enumerate(nums):
ps[i + 1] = v + ps[i]
hp = []
for i in range(len(ps)):
for j in range(i + 1, len(ps)):
heappush(hp, -(ps[j] - ps[i]))
return list(reversed([-heappop(hp)
for _ in range(k)]))
ob = Solution()nums = [2, 4, 5, -100, 12, -30, 6, -2, 6] k = 3
print(ob.solve(nums, k))输入值
[2, 4, 5, -100, 12, -30, 6, -2, 6],3
输出结果
[10, 11, 12]
热门推荐
10 大哥添孙子简短祝福语
11 对银行的祝福语简短
12 岁月有芬芳祝福语简短
13 古风考试祝福语 唯美简短
14 春节初二祝福语简短
15 厨房祝福语简短100句
16 妈妈生日祝福语简短优美
17 小班小孩生日祝福语简短
18 今天孩子高考祝福语简短