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

Golang | Leetcode Golang题解之第295题数据流的中位数

题目:

题解:

type MedianFinder struct {nums        *redblacktree.Treetotal       intleft, right iterator
}func Constructor() MedianFinder {return MedianFinder{nums: redblacktree.NewWithIntComparator()}
}func (mf *MedianFinder) AddNum(num int) {if count, has := mf.nums.Get(num); has {mf.nums.Put(num, count.(int)+1)} else {mf.nums.Put(num, 1)}if mf.total == 0 {it := mf.nums.Iterator()it.Next()mf.left = iterator{it, 1}mf.right = mf.left} else if mf.total%2 == 1 {if num < mf.left.Key().(int) {mf.left.prev()} else {mf.right.next()}} else {if mf.left.Key().(int) < num && num < mf.right.Key().(int) {mf.left.next()mf.right.prev()} else if num >= mf.right.Key().(int) {mf.left.next()} else {mf.right.prev()mf.left = mf.right}}mf.total++
}func (mf *MedianFinder) FindMedian() float64 {return float64(mf.left.Key().(int)+mf.right.Key().(int)) / 2
}type iterator struct {redblacktree.Iteratorcount int
}func (it *iterator) prev() {if it.count > 1 {it.count--} else {it.Prev()it.count = it.Value().(int)}
}func (it *iterator) next() {if it.count < it.Value().(int) {it.count++} else {it.Next()it.count = 1}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 编程语言「描述符」漫谈——以C++与Rust为例的行为声明与类型描述
  • 【Go - mongodb - bson / schema】
  • mcasttest-tool组播检测工具
  • linux shell(中)
  • Flink中三种模式:YARN Session 模式、YARN Per-Job 模式和 YARN Application 模式提交任务命令
  • XML 和 SimpleXML 入门教程
  • 某视频平台关键 so vm 解释器还原
  • 解析大数据分析行业的现状与前景:全球视角下的中国力量
  • Windows 环境 batch 脚本实现 PG 数据库恢复功能
  • 从代码层面熟悉UniAD,开始学习了解端到端整体架构
  • 【软件测试】--接口测试
  • WordPress主题追格企业官网主题免费开源版V1.1.6
  • 【剑指offer】
  • Swift学习入门,新手小白看过来
  • package:mine android studio新过滤规则及其用法 Filter使用技巧
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • create-react-app项目添加less配置
  • css布局,左右固定中间自适应实现
  • SpiderData 2019年2月16日 DApp数据排行榜
  • 利用jquery编写加法运算验证码
  • 面试总结JavaScript篇
  • 如何利用MongoDB打造TOP榜小程序
  • 深度学习中的信息论知识详解
  • 学习JavaScript数据结构与算法 — 树
  • 一起参Ember.js讨论、问答社区。
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • Hibernate主键生成策略及选择
  • 阿里云服务器如何修改远程端口?
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • ​用户画像从0到100的构建思路
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • # Redis 入门到精通(七)-- redis 删除策略
  • #162 (Div. 2)
  • #include<初见C语言之指针(5)>
  • (1)虚拟机的安装与使用,linux系统安装
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (二) 初入MySQL 【数据库管理】
  • (二)windows配置JDK环境
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (四)鸿鹄云架构一服务注册中心
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (转)iOS字体
  • (转载)Linux网络编程入门
  • ***测试-HTTP方法
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .net core 外观者设计模式 实现,多种支付选择
  • .NET Framework、.NET Core 、 .NET 5、.NET 6和.NET 7 和.NET8 简介及区别
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .Net实现SCrypt Hash加密
  • .NET应用UI框架DevExpress XAF v24.1 - 可用性进一步增强