当前位置: 首页 > news >正文

灯具网站模板百度做网站多少钱

灯具网站模板,百度做网站多少钱,注册网站时手机号格式不正确,wordpress用户绑定手机例题链接-前k个高频元素 前言 以前都是用的C写算法题#xff0c;最近也想熟悉一下golang的数据结构#xff0c;故来一篇题解堆分析。 正文 这里重点不在分析题目#xff0c;在于golang中的 container/heap 对于内部实现逻辑有兴趣的可以去看看源码。 这里先给出题解的代…例题链接-前k个高频元素 前言 以前都是用的C写算法题最近也想熟悉一下golang的数据结构故来一篇题解堆分析。 正文 这里重点不在分析题目在于golang中的 container/heap 对于内部实现逻辑有兴趣的可以去看看源码。 这里先给出题解的代码 package mainimport (container/heapfmt )// IHeap 是一个最小堆的实现 type IHeap [][2]intfunc (h IHeap) Len() int {return len(h) }func (h IHeap) Less(i, j int) bool {return h[i][1] h[j][1] } func (h IHeap) Swap(i, j int) {h[i], h[j] h[j], h[i] }// Push 方法将元素添加到堆中 func (h *IHeap) Push(x interface{}) {*h append(*h, x.([2]int)) }// Pop 方法移除并返回堆顶元素 func (h *IHeap) Pop() interface{} {old : *hn : len(old)x : old[n-1]*h old[0 : n-1]return x }// topKFrequent 函数找到数组中出现频率最高的 k 个元素 func topKFrequent(nums []int, k int) []int {// 统计每个数字的出现频率m : map[int]int{}for _, num : range nums {m[num]}// 创建最小堆h : IHeap{}heap.Init(h)// 将元素推入堆并维护堆的大小for key, value : range m {heap.Push(h, [2]int{key, value})if h.Len() k {heap.Pop(h)}}// 从堆中提取结果ret : make([]int, k)for i : 0; i k; i {ret[k-i-1] heap.Pop(h).([2]int)[0]}return ret }func main() {nums : []int{1, 1, 216, 216, 216, 216, 216, 216, 6, 1, 2, 2, 3, 9, 9, 5, 6, 0, 6, 6, 9, 4, 5, 12, 6, 459, 15, 15, 216, 26, 15, 115, 15}k : 5fmt.Println(topKFrequent(nums, k)) }1. 结构定义 这部分定义了我们的堆中元素的基本结构每个元素有两部分组成这也令go中的堆的元素更加灵活可以支持很多数据结构。 type IHeap [][2]int2. Len()方法 首先需要实现我们的Len方法实现这个方法的目的是他将会在之后函数内部的Down/Up方法所调用具有重要的作用(这部分在源码里面) func (h IHeap) Len() int {return len(h) }3. Less()方法 Less方法的定义主要是实现了堆内部的比较器也就是排序原则就是大根堆和小根堆的区别 func (h IHeap) Less(i, j int) bool {return h[i][1] h[j][1] }4. Swap()方法 这部分也是主要用于Down和Up内部调用表示利用传入的下标来进行元素位置的交换 func (h IHeap) Swap(i, j int) {h[i], h[j] h[j], h[i] }5. Push()方法 push方法也是用于内部的push函数的调用此处不需要进行Down或者Up的操作因为内部的Push函数已经为你准备好了。 func (h *IHeap) Push(x interface{}) {*h append(*h, x.([2]int)) }6. Pop()方法 移除堆顶元素的方法同样用于内部调用 func (h *IHeap) Pop() interface{} {old : *hn : len(old)x : old[n-1]*h old[0 : n-1]return x }结语 以上提到方法都需要我们自己定义一个堆,并实现Heap的接口才能对heap的函数进行调用从而实现堆的效果。 总的来说go的堆虽然实现比较繁琐但是管理起来却比较灵活其实比起c里面的stlgo里面的container/heap让我更有写的欲望吧…
http://www.hkea.cn/news/14397622/

相关文章:

  • 杭州余杭做网站公司网页制作好了如果让别人搜到
  • 手机app界面设计论文网站的链接优化
  • 给网站挂黑链做引流推广的平台600
  • 请简要描述如何进行网站设计规划网站开发过程分为哪几个阶段
  • 学做网站书籍免费外贸网站有哪些
  • 网站品牌高端定制上鼎工程建设有限公司网站
  • 网站的管理与维护wordpress 内置 函数大全
  • 如何做网站教学大型门户网站建设哪家好
  • 大型网站建设视频php网站开发视频教程
  • 知名网站建设托管个人网站设计师
  • 水果网站建设的策划书化妆品销售网站开发与设计
  • 手机网站跳转代码长沙培训网站制作
  • 中国住房和城乡建设部网站6网站建设一龙条
  • 免费建外贸网站wordpress api post
  • 衡水网站制作与推广最干净在线代理
  • 企业自助建站源码16素材网
  • 如何自己做框架开发网站投教网站建设
  • 黑河网站建设网站建设中管理员登录的代码怎么写
  • 寿光 网站建设页面设计升级访问紧急通知
  • 温州论坛招聘百度seo软件
  • 河北seo网站设计做感恩网站的图片
  • wordpress转移整站梧州网站建设哪家好
  • 做网站灵宝商业网站运营成本
  • 无锡建设建设局网站大学做机器人比赛的网站论坛
  • 广东两学一做考学网站大连做网站的公司有哪些
  • 学做蛋糕什么网站html5支持最好的浏览器
  • 英文网站seo如何做wordpress循环评论
  • 网站建设和邮箱的关联seo网站推广下载
  • 写作网站云网站系统平台建设
  • 云南省建设培训中心网站招聘网站做销售