【Go - 小顶堆/大顶堆】

server/2025/2/4 11:39:53/

在 Go 语言中,标准库 container/heap 提供了堆(Heap)的实现。可以使用 container/heap 包来实现自己的大顶堆或小顶堆。

小顶堆示例

以下是一个使用 container/heap 包实现的小顶堆示例:

package mainimport ("container/heap""fmt"
)type IntHeap []intfunc (h IntHeap) Len() int {return len(h)
}
func (h IntHeap) Less(i int, j int) bool {return h[i] < h[j]
}
func (h IntHeap) Swap(i int, j int) {h[i], h[j] = h[j], h[i]
}
func (h *IntHeap) Pop() interface{} {old := *hn := len(old)x := old[n-1]*h = old[0:n-1]return x
}
func (h *IntHeap) Push(x interface{}) {*h = append(*h, x.(int))
}func main() {h := &IntHeap{2, 1, 5}heap.Init(h)heap.Push(h, 3)m := (*h)[0]fmt.Printf("minimum: %d\n", m)m = heap.Pop(h).(int)fmt.Printf("minimum %d\n", m)m = heap.Pop(h).(int)fmt.Printf("minimum %d\n", m)}

注意📢 :

  • 涉及到空间变化的,Push,Pop 传参是指针类型,其余的是引用类型。
  • Push,Pop的参数为interface{},在内部再进行类型转换

大顶堆,则只需将Less函数改下,小于改为大于,其余代码一致。

func (h IntHeap) Less(i int, j int) bool {return h[i] > h[j]
}

http://www.ppmy.cn/server/164875.html

相关文章

HTML 符号详解

HTML 符号详解 引言 HTML(超文本标记语言)符号是HTML文档中用来表示特殊字符的标记。这些符号在日常网页设计和开发中扮演着重要角色,特别是在需要显示版权、商标、货币符号等特殊字符时。本文将详细介绍HTML符号的用法、类型以及如何在HTML文档中插入这些符号。 HTML符号…

新鲜速递:DeepSeek-R1开源大模型本地部署实战—Ollama + MaxKB 搭建RAG检索增强生成应用

在AI技术快速发展的今天&#xff0c;开源大模型的本地化部署正在成为开发者们的热门实践方向。最火的莫过于吊打OpenAI过亿成本的纯国产DeepSeek开源大模型&#xff0c;就在刚刚&#xff0c;凭一己之力让英伟达大跌18%&#xff0c;纳斯达克大跌3.7%&#xff0c;足足是给中国AI产…

DDD - 领域事件_解耦微服务的关键

文章目录 Pre领域事件的核心概念领域事件的作用领域事件的识别领域事件的技术实现领域事件的运行机制案例领域事件驱动的优势 Pre DDD - 微服务设计与领域驱动设计实战(中)_ 解决微服务拆分难题 EDA - Spring Boot构建基于事件驱动的消息系统 领域事件的核心概念 领域事件&a…

数据库 - Sqlserver - SQLEXPRESS、由Windows认证改为SQL Server Express认证进行连接 (sa登录)

本文讲SqlServer Express版本在登录的时候&#xff0c; 如何由Windows认证&#xff0c;修改为Sql Server Express认证。 目录 1&#xff0c;SqlServer Express的Windows认证 2&#xff0c;修改为混合认证 3&#xff0c;启用sa 用户 4&#xff0c;用sa 用户登录 下面是详细…

K8S中数据存储之配置存储

配置存储 在Kubernetes中&#xff0c;ConfigMap和Secret是两种核心资源&#xff0c;用于存储和管理应用程序的配置数据和敏感信息。理解它们的功能和最佳实践对于提高Kubernetes应用程序的安全性和配置管理的效率至关重要。 ConfigMap ConfigMap是一种API对象&#xff0c;允许…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.27 线性代数王国:矩阵分解实战指南

1.27 线性代数王国&#xff1a;矩阵分解实战指南 #mermaid-svg-JWrp2JAP9qkdS2A7 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-JWrp2JAP9qkdS2A7 .error-icon{fill:#552222;}#mermaid-svg-JWrp2JAP9qkdS2A7 .erro…

Java开发vscode环境搭建

1 几个名词 JDK Java Development Kit JRE Java Runtion Environment JVM JDK 包括 Compiler,debugger,JRE等。JRE包括JVM和Runtime Library。 2 配置环境 2.1 安装JDK 类比 C/C的 g工具 官网&#xff1a;https://www.oracle.com/java/technologies/downloads/ 根据自己使…

ARM内核:嵌入式时代的核心引擎

引言 在当今智能设备无处不在的时代&#xff0c;ARM&#xff08;Advanced RISC Machines&#xff09;处理器凭借其高性能、低功耗的特性&#xff0c;成为智能手机、物联网设备、汽车电子等领域的核心引擎。作为精简指令集&#xff08;RISC&#xff09;的典范&#xff0c;ARM核…