python - 带有常规列表的 Heapop 和 Heappush(非堆化列表)
问题描述
因此,我看到了各种帖子,其中用户在尝试从常规列表中进行堆放时会得到“不寻常/意外”的结果。(ex: Unusual result from heappop? ) 解决办法当然是先堆化它。
然而,对于这个LeetCode 解决方案, heapq 方法用于一个常规列表,该列表在使用这些方法之前没有被堆化,但仍然返回正确的预期结果。这是因为当您在常规列表中使用 heappop/heappush 时,它只会弹出/添加列表中的第一个元素?
解决方案
在示例中,他们在最初包含单个元素(源)的列表上使用heappop ,因此它满足 heap 属性。在使用或等函数之前
,不必heapify
在列表中使用。实际上,列表可能是空的,包含单个元素,或者是已经满足堆属性的列表。heappop
heappush
例子:
>>> l = [1, 3, 2, 5, 4] # initial list that respects the heap property
>>> heappop(l)
1
>>> heappop(l)
2
>>> heappop(l)
3
>>> heappop(l)
4
>>> heappop(l)
5
推荐阅读
- ocaml - (Ocaml)可视代码上的未绑定模块错误
- google-cloud-platform - 使用 Airflow 将本地目录上传到 GCS
- mysql - 索引 VARCHAR 的 key_len
- deployment - Mulesoft - Cloudhub 部署错误:部署配置无效,:未定义部署配置
- spring-boot - 运行 Spring Boot 应用程序时 Gradle SSLHandShakeException
- aws-cdk - 创建 ALB 时是否可以添加多个安全组
- reactjs - 重新获取特定 GraphQL 可观察查询的问题
- android - 当 Studio 找不到时,我如何在 Mac 上找到 Android SDK?
- python - 获取分组数据框中的行数
- python - 用标题值填充列