用Python在线性时间内查找第k个最小元素的程序
假设我们有一个名为nums的数字列表,我们还有另一个值k,我们必须找到列表中第k个(从0开始)最小的元素。我们必须O(n)平均及时解决这个问题。
因此,如果输入像nums=[6,4,9,3,1]k=2,那么输出将是4,因为排序后的列表将像[1,3,4,6,9],第k个最小元素是4。
示例
让我们看看以下实现以获得更好的理解-
from heapq import heappop, heappush
def solve(nums, k):
maxHeap = []
for i in range(k + 1):
heappush(maxHeap, -nums[i])
for i in range(k + 1, len(nums)):
if nums[i] < -maxHeap[0]:
heappop(maxHeap)
heappush(maxHeap, -nums[i])
return -maxHeap[0]
nums = [6, 4, 9, 3, 1]
k = 2
print(solve(nums, k))输入
[6, 4, 9, 3, 1], 2输出结果
4
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短