当前位置: 首页 > 面试题库 >

从一亿个数字中检索前100个数字

栾瑞
2023-03-14
问题内容

我的一个朋友被问到一个问题

从一亿个数字中检索最大前100个数字

在最近的一次面试中。您有什么主意想出一种有效的解决方法吗?


问题答案:

运行它们全部通过一个最小堆大小100的:对于每个输入数k,替换当前分钟mmax(k, m)。之后,堆将容纳100个最大的输入。

诸如Lucene之类的搜索引擎可以通过改进使用此方法来选择最相关的搜索答案。

编辑: 我没有通过面试-我两次都弄错了细节(在此之前,在生产中)。这是检查代码;它几乎与Python的标准相同heapq.nlargest()

import heapq

def funnel(n, numbers):
    if n == 0: return []
    heap = numbers[:n]
    heapq.heapify(heap)
    for k in numbers[n:]:
        if heap[0] < k:
            heapq.heapreplace(heap, k)
    return heap

>>> funnel(4, [3,1,4,1,5,9,2,6,5,3,5,8])
[5, 8, 6, 9]


 类似资料:
  • 我只能给出一个强力解决方案,即以O(nlogn)时间复杂度对数组进行排序,并取最后100个数字。 面试官在寻找一个更好的时间复杂性,我尝试了几个其他的解决方案,但都没能回答他。有更好的时间复杂性解决方案吗?

  • 问题内容: 我只是在学习Java,并且正在尝试让我的程序检索数字的第一个数字- 例如543应该返回5,依此类推。我想转换为字符串,但是我不确定如何将其转换回字符串?谢谢你的帮助。 问题答案: int number = 534; int firstDigit = Integer.parseInt(Integer.toString(number).substring(0, 1));

  • rank ▲ ✰ vote url 41 487 108 705 url 检查一个字符串是否是一个数字 如果一个字符串可以被看做一个数字那么有什么好的方法可以检测出来? 我能想到的方法: def is_number(s): try: float(s) return True except ValueError: return Fals

  • 一个显而易见的解决方案是: 这需要线性时间。我们能再快点吗? 这比线性时间快吗 还有哪些方法(效率是首要考虑的)<我见过这个,只是我只需要找到第一个数字。(还有,我不明白答案)。

  • 本文向大家介绍向一个数组中插入一个1~100的随机数,包括了向一个数组中插入一个1~100的随机数的使用技巧和注意事项,需要的朋友参考一下

  • 我正在编写一个程序,其中用户输入以下格式的字符串: 我需要检查字符串中是否有数字 然后只提取数字。 如果我使用或,程序在字符串中找不到数字,无论输入是什么,但仅在只有数字时才有效。 我可以使用什么作为查找和提取的解决方案?

  • 例如,243是3的完美幂,因为243=3^5。 我以前一直在使用,我认为它工作得很好,但后来我用上面的示例尝试了它,由于浮点运算,它实际上返回了4.99999999999。所以它只适用于非常小的数字,我发现不到大约100个。 我想我可以用一个循环来重复乘法。。。i、 将i设置为3,然后设置为9,然后设置为27,然后设置为81,然后设置为243,这等于目标值,所以我们知道这是一个完美的幂。如果它达到

  • 有没有人知道我可以使用PHP从MySql数据库中的两个表中获取数据的方法?我的android应用程序允许用户在购物车(MySql中的表)中放置物品。当用户点击应用程序中的购物车按钮时,它会加载“购物车activity”,并根据“会话ID”或“客户ID”(如果他们已经登录)加载一个列表视图,其中包含他们添加到购物车中的所有内容。我现在所做的是,当项目被添加到购物车时,我捕获产品ID、产品名称、图像U