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

如何在Python的heapq中实现减键功能?

昌博易
2023-03-14
问题内容

我知道可以在O(log n)中实现减键功能,但是我不知道怎么办?


问题答案:

为了有效地实现“ decrease-
key”,您需要访问功能“减少此元素并将该元素与子元素交换,直到恢复堆条件”。在heapq.py,这就是所谓的_siftdown(以及类似_siftup的递增)。因此,好消息是这些函数在那里…坏消息是它们的名称以下划线开头,表明它们被视为“内部实现详细信息”,不应由应用程序代码直接访问(下一个版本的标准库可能会更改周围的内容并使用此类“内部”破坏代码)。

由您决定是要忽略警告前导- _,使用O(N)heapify而不是O(log
N)筛选,还是重新实现heapq的部分或全部功能,以使筛选原语“公开为对象的公共部分”。接口”。由于heapq的数据结构是公开的(只是列表),因此,我认为最好的选择可能是部分重新实现-
从本质上将sifting函数从heapq.py复制到应用程序代码中。



 类似资料:
  • 问题内容: …可以用于字符串相等的关键字。 我都尝试过,但是他们没有用。 问题答案: 测试字符串仅在插入字符串时有效。除非你真的知道自己在做什么,并明确实习的字符串,你应该 永远不会 使用的字符串。 测试 身份 ,而非 平等 。这意味着Python会简单地比较一个对象所在的内存地址。基本上回答了以下问题:“同一对象有两个名称吗?” -超载毫无意义。 例如,为 False 。通常,Python将每个

  • 问题内容: 我需要用于区域名称的initcap功能。有什么办法可以在MySQL中实现呢? 非洲 印度次大陆 美国西海岸 欧洲/英国 这样结果可以吗?有什么建议么?提前致谢。 问题答案: 有时候我在MySQL中寻找内置的initcap / ucfirst函数,但不幸的是找不到这样的字符串函数,所以决定写我自己的..感谢MySQL社区成员纠正了我函数中的错误并将其发布回去。

  • 问题内容: 我想制作一个使用ReLU函数的简单神经网络。有人可以告诉我如何使用numpy实现该功能的线索。 问题答案: 有两种方法。 如果使用以下代码计时结果: 我们得到: 因此乘法似乎是最快的。

  • 问题内容: 我以前的编程中,代码段仅用于调试目的(记录命令等)。通过使用预处理程序指令,可以完全禁用这些语句以进行生产,如下所示: 做类似的事情的最好方法是什么? 问题答案: 如果只想禁用日志记录方法,请使用该模块。如果日志级别设置为排除调试语句,那么它将非常接近无操作(它仅检查日志级别并返回而不插入日志字符串)。 如果要在特定条件下以字节码编译时实际删除代码块,则唯一的选择是相当神秘的全局变量。

  • 到目前为止,我的代码如下所示: 我有一个JLabel,它显示正常的图片。我实现了一个鼠标侦听器,用于移动鼠标。每次鼠标在图片中移动时,我都希望发生一点缩放。 我试着在网上查,但我找不到一个解决办法。 如果我解释得不够好,请问,我不是专业人士:D 非常感谢帮助!

  • 问题内容: 如何实现与C#代码等效的Python? 这是一个好主意吗??请在您的答案中举例说明。 问题答案: 正如其他人在这里提到的: 在Python中不需要接口。这是因为Python具有适当的多重继承,还具有鸭式输入法,这意味着 必须 在Java中具有接口的地方,而不必在Python中具有接口。 也就是说,接口还有多种用途。其中一些被Python 2.6中引入的Pythons抽象基类覆盖。如果您