作为编程的新手,我正在尝试执行一个函数来查找整数列表列表中的第k个最大的int。我之前尝试过一下这个列表并且有效。
然而,对于这个功能,它的基本情况有太多可能性:
例如:[1, 2], [[], 1], [[1], 2], [[1], [1]]
我被困在基础案件中。任何人都可以给我一个暗示吗?
此功能的操作如下:
find_2smallest([1,1,3])->1
find_2smallest([[1,[]], 9, [[1], [3]], [4]])->3
答案 0 :(得分:2)
一些提示:
编写一个flatten函数将列表层次结构转换为单个集合(具有唯一元素),排序并选择第k个元素。
示例实施
from django.contrib.staticfiles.storage import ManifestStaticFilesStorage
from django.conf import settings
class BigBlindManifestStaticFilesStorage(ManifestStaticFilesStorage):
def url(self, name, force=True):
"""
Override .url to use hashed url in development
"""
return super(ManifestStaticFilesStorage, self).url(name, True)
当然,这种方法效率最高(也许效率最低)。您可以从每个子级别返回前k个元素,并在每次合并时修剪第k级。
答案 1 :(得分:0)
我使用带有默认值的额外参数编写了一个通用解决方案(您指定k
),以跟踪到目前为止找到的k
的最小集合,以及这是否是递归的最高级别或一个子级别。子级返回当前最小子集,顶级返回最后一个条目(即k
th 最小值)。使用k
的{{1}}方法维护最小的heapq
集。
nsmallest