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

Golang | Leetcode Golang题解之第352题将数据流变为多个不相交区间

题目:

题解:

type SummaryRanges struct {*redblacktree.Tree
}func Constructor() SummaryRanges {return SummaryRanges{redblacktree.NewWithIntComparator()}
}func (ranges *SummaryRanges) AddNum(val int) {// 找到 l0 最大的且满足 l0 <= val 的区间 interval0 = [l0, r0]interval0, has0 := ranges.Floor(val)if has0 && val <= interval0.Value.(int) {// 情况一return}// 找到 l1 最小的且满足 l1 > val 的区间 interval1 = [l1, r1]// 在有序集合中,interval1 就是 interval0 的后一个区间interval1 := ranges.Iterator()if has0 {interval1 = ranges.IteratorAt(interval0)}has1 := interval1.Next()leftAside := has0 && interval0.Value.(int)+1 == valrightAside := has1 && interval1.Key().(int)-1 == valif leftAside && rightAside {// 情况四interval0.Value = interval1.Value().(int)ranges.Remove(interval1.Key())} else if leftAside {// 情况二interval0.Value = val} else if rightAside {// 情况三right := interval1.Value().(int)ranges.Remove(interval1.Key())ranges.Put(val, right)} else {// 情况五ranges.Put(val, val)}
}func (ranges *SummaryRanges) GetIntervals() [][]int {ans := make([][]int, 0, ranges.Size())for it := ranges.Iterator(); it.Next(); {ans = append(ans, []int{it.Key().(int), it.Value().(int)})}return ans
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • ROS 2中,CMakeList.txt常见语法
  • 【数据结构】二叉树的深度理解
  • 浅谈Winform
  • Qt程序比较字符串Qstring是否相等
  • day40——数据库 sqlite3
  • 这周末,除非外面下钞票,否则谁也拦不住我玩《黑神话悟空》(附:两款可以玩转悟空的显卡推荐)
  • Android 安卓Compose软键盘和Activity页面的协调处理问题
  • 【Prettier】代码格式化工具Prettier的使用和配置介绍
  • 超容易出成果的方向:多模态医学图像处理!
  • 大模型参数高效微调技术总结
  • 基于鸿蒙Next模拟扫图识物的一个过程
  • Transformer大模型在训练过程中所需的计算量
  • C语言:文件(写入,读取)
  • Angular路由使用
  • 培训第三十四天(初步了解Docker与套接字的应用)
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • [LeetCode] Wiggle Sort
  • 230. Kth Smallest Element in a BST
  • bootstrap创建登录注册页面
  • iOS | NSProxy
  • JWT究竟是什么呢?
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 多线程 start 和 run 方法到底有什么区别?
  • 今年的LC3大会没了?
  • 判断客户端类型,Android,iOS,PC
  • 前端临床手札——文件上传
  • 删除表内多余的重复数据
  • 探索 JS 中的模块化
  • 积累各种好的链接
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • $$$$GB2312-80区位编码表$$$$
  • ()、[]、{}、(())、[[]]命令替换
  • (1)(1.13) SiK无线电高级配置(六)
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (30)数组元素和与数字和的绝对差
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (五)网络优化与超参数选择--九五小庞
  • (转)程序员疫苗:代码注入
  • ******之网络***——物理***
  • .gitignore文件忽略的内容不生效问题解决
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .Net Winform开发笔记(一)
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [001-03-007].第07节:Redis中的管道
  • [2023-年度总结]凡是过往,皆为序章
  • [AUTOSAR][诊断管理][ECU][$37] 请求退出传输。终止数据传输的(上传/下载)
  • [BZOJ 3282] Tree 【LCT】
  • [C#]调用本地摄像头录制视频并保存
  • [c++刷题]贪心算法.N01