当前位置: 首页 > 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}
}
http://www.lryc.cn/news/409936.html

相关文章:

  • 【C语言】C语言期末突击/考研--数据的输入输出
  • How can I fix my Flask server‘s 405 error that includes OpenAi api?
  • LeetCode Hot100 将有序数组转换为二叉搜索树
  • 【Linux】线程的控制
  • Vue3自研开源Tree组件:人性化的拖拽API设计
  • MYSQL--触发器详解
  • C++实用指南:Lambda 表达式的妙用
  • FastAPI(七十八)实战开发《在线课程学习系统》接口开发-- 评论
  • 基于springboot+vue+uniapp的居民健康监测小程序
  • TypeScript基础【学习笔记】
  • 树莓派物联网服务器搭建流程:集成 Node.js、InfluxDB、Grafana 和 MQTT 协议
  • typescript 断言
  • 期刊评价指标及其查询方法
  • 巴斯勒相机(Basler) ACE2 dart 系列说明和软件
  • 【Pycharm中anaconda使用介绍】
  • 2024下半年,前端的技术风口来了
  • Spock Unit Test in Java
  • := 符号python
  • UPLOAD-LABS靶场[超详细通关教程,通关攻略]
  • 测试面试宝典(三十七)—— 接口测试中的加密参数如何处理?
  • 秋招突击——7/23——百度提前批面试准备和正式面试
  • 学习日记:数据类型2
  • Django Web框架——05
  • 【React】项目的目录结构全面指南
  • Django学习(二)
  • Java引用类型
  • ubunto安装redis
  • 【odoo17 | Owl】前端js钩子调用列表选择视图
  • MATLAB基础:函数与函数控制语句
  • 2024.7.30 搜索插入位置(二分法)